Skip to content

Commit

Permalink
Creating an example docker compose file for production.
Browse files Browse the repository at this point in the history
  • Loading branch information
jefawks3 committed Mar 20, 2023
1 parent cece426 commit e0ddfc5
Show file tree
Hide file tree
Showing 5 changed files with 215 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .docker/rails.prod.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ RUN apt-get update -qq && \
default-jre \
git \
curl \
cron \
bash \
libxml2-dev \
libxslt-dev \
Expand Down Expand Up @@ -70,5 +71,11 @@ RUN rm -rf $APP_ROOT/tmp
RUN rm -rf $APP_ROOT/log
RUN rm -rf $APP_ROOT/node_modules # Making the image smaller

# Create empty crontab file
RUN crontab -l | { cat; echo ""; } | crontab -

# Update crontab file using whenever command
RUN bundle exec whenever --update-crontab

# Expose port
EXPOSE $RAILS_PORT
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,4 @@ gem "jsbundling-rails", "~> 1.1"
gem "blacklight_range_limit", "~> 7.8"
gem "addressable", "~> 2.8"
gem "faraday", "~> 2.7"
gem "whenever", "~> 1.0", require: false
4 changes: 4 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ GEM
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
childprocess (4.1.0)
chronic (0.10.2)
concurrent-ruby (1.1.10)
crass (1.0.6)
debug (1.6.3)
Expand Down Expand Up @@ -337,6 +338,8 @@ GEM
websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
whenever (1.0.0)
chronic (>= 0.6.3)
xpath (3.2.0)
nokogiri (~> 1.8)
yell (2.2.2)
Expand Down Expand Up @@ -376,6 +379,7 @@ DEPENDENCIES
tzinfo-data
web-console
webdrivers
whenever (~> 1.0)

RUBY VERSION
ruby 3.1.2p20
Expand Down
28 changes: 28 additions & 0 deletions config/schedule.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Use this file to easily define all of your cron jobs.
#
# It's helpful, but not entirely necessary to understand cron before proceeding.
# http://en.wikipedia.org/wiki/Cron

# Example:
#
# set :output, "/path/to/my/cron_log.log"
#
# every 2.hours do
# command "/usr/bin/some_great_command"
# runner "MyModel.some_method"
# rake "some:great:rake:task"
# end
#
# every 4.days do
# runner "AnotherModel.prune_old_records"
# end

# Learn more: http://github.com/javan/whenever

# To execute: bundle exec whenever

# Email job output by setting the mailto: option
# See https://github.com/javan/whenever#customize-email-recipient-with-the-mailto-environment-variable
every '0 0 * * *', mailto: '[email protected]' do
rake "data:migrate"
end
175 changes: 175 additions & 0 deletions docker-compose.prod-example.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
version: '3.7'

volumes:
postgres:
solr_data:
solr_backups:

networks:
solr:
db:

secrets:
master_key:
file: ./config/master.key

services:
solr1:
image: solr:9.0.0
container_name: solr1
ports:
- "8981:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
volumes:
- solr_data:/var/solr
- solr_backups:/var/backups
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3

solr2:
image: solr:9.0.0
container_name: solr2
ports:
- "8982:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
volumes:
- solr_data:/var/solr
- solr_backups:/var/backups
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3

solr3:
image: solr:9.0.0
container_name: solr3
ports:
- "8983:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
volumes:
- solr_data:/var/solr
- solr_backups:/var/backups
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3

zoo1:
image: zookeeper:3.6.2
container_name: zoo1
restart: always
hostname: zoo1
ports:
- 2181:2181
- 7001:7000
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
volumes:
- solr_backups:/var/backups
networks:
- solr

zoo2:
image: zookeeper:3.6.2
container_name: zoo2
restart: always
hostname: zoo2
ports:
- 2182:2181
- 7002:7000
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
volumes:
- solr_backups:/var/backups
networks:
- solr

zoo3:
image: zookeeper:3.6.2
container_name: zoo3
restart: always
hostname: zoo3
ports:
- 2183:2181
- 7003:7000
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
volumes:
- solr_backups:/var/backups
networks:
- solr

postgres:
image: "postgres:15.0-alpine"
restart: always
environment:
- POSTGRES_USER=rails
- POSTGRES_PASSWORD=400zzAFOQ2t2llyAJBt
- POSTGRES_DB=hxs_blacklight
ports:
- '5438:5432'
volumes:
- postgres:/var/lib/postgresql/data
networks:
- db

app:
build:
context: .
dockerfile: .docker/rails.prod.Dockerfile
args:
- RAILS_PORT=3000
secrets:
- master_key
environment:
- SOLR_URL=http://solr1:8983/solr/blacklight-core
- DATABASE_URL=postgres://rails:400zzAFOQ2t2llyAJBt@postgres:5432/hxs_blacklight
ports:
- "3000:3000"
command:
- "bundle exec rails server -p 3000 -b 0.0.0.0"
networks:
- solr
- db
depends_on:
- postgres
- solr1
- solr2
- solr3

worker:
build:
context: .
dockerfile: .docker/rails.prod.Dockerfile
args:
- RAILS_PORT=3000
secrets:
- master_key
environment:
- SOLR_URL=http://solr1:8983/solr/blacklight-core
- DATABASE_URL=postgres://rails:400zzAFOQ2t2llyAJBt@postgres:5432/hxs_blacklight
command:
- "cron -f"
networks:
- solr
- db

0 comments on commit e0ddfc5

Please sign in to comment.