Skip to content

Commit

Permalink
Feature: Add Sidekiq docker (#443)
Browse files Browse the repository at this point in the history
* update db:schema due to migration

* reduce default concurrency for redis connection limit

* Allow auto update packages in the development mode without building image

* add sidekiq support to docker-compose

* Pass sidekiq cofig file

* passed the env file in base image rather than separately in rails, web packer and sidekiq in docker-compose
* removed un-necessary changes in schema
* changed concurrency to finer values
* removed default size set in sidekiq redis config
* Added the sidekiq config option in Procfile.dev

Co-authored-by: Sony Mathew <[email protected]>
  • Loading branch information
antodoms and sony-mathew committed Jan 26, 2020
1 parent 8cf135f commit 6325acd
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Procfile.dev
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
backend: bin/rails s -p 3000
frontend: bin/webpack-dev-server
worker: bundle exec sidekiq
worker: bundle exec sidekiq -C config/sidekiq.yml
5 changes: 3 additions & 2 deletions config/initializers/sidekiq.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
url: ENV.fetch('REDIS_URL', 'redis://127.0.0.1:6379'),
password: ENV.fetch('REDIS_PASSWORD', nil)
}

Sidekiq.configure_client do |config|
config.redis = sidekiq_redis_config
config.redis = sidekiq_redis_config.merge(size: 5)
end

Sidekiq.configure_server do |config|
config.redis = sidekiq_redis_config
config.redis = sidekiq_redis_config.merge(size: 10)
end
6 changes: 3 additions & 3 deletions config/sidekiq.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# pick it up automatically.
---
:verbose: false
:concurrency: 10
:concurrency: 3
:timeout: 25

# Sidekiq will run this file through ERB when reading it so you can
Expand All @@ -18,6 +18,6 @@

# you can override concurrency based on environment
production:
:concurrency: 3
:concurrency: 10
staging:
:concurrency: 15
:concurrency: 5
25 changes: 23 additions & 2 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ services:
tty: true
stdin_open: true
image: chatwoot:development
env_file: .env

rails:
<<: *base
Expand All @@ -25,21 +26,40 @@ services:
- node_modules:/app/node_modules
- packs:/app/public/packs
- cache:/app/tmp/cache
- bundle:/usr/local/bundle
depends_on:
- postgres
- redis
- webpack
- mailhog
- sidekiq
ports:
- 3000:3000
env_file: .env
environment:
- WEBPACKER_DEV_SERVER_HOST=webpack
- NODE_ENV=development
- RAILS_ENV=development
entrypoint: docker/entrypoints/rails.sh
command: ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]

sidekiq:
<<: *base
image: chatwoot-rails:development
volumes:
- ./:/app:delegated
- node_modules:/app/node_modules
- packs:/app/public/packs
- cache:/app/tmp/cache
- bundle:/usr/local/bundle
depends_on:
- postgres
- redis
- mailhog
environment:
- NODE_ENV=development
- RAILS_ENV=development
command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]

webpack:
<<: *base
build:
Expand All @@ -51,9 +71,9 @@ services:
- node_modules:/app/node_modules # Node modules shared across containers
- packs:/app/public/packs
- cache:/app/tmp/cache
- bundle:/usr/local/bundle
ports:
- "3035" # Webpack dev server
env_file: .env
environment:
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
- NODE_ENV=development
Expand Down Expand Up @@ -95,3 +115,4 @@ volumes:
packs:
node_modules:
cache:
bundle:
2 changes: 2 additions & 0 deletions docker/entrypoints/rails.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ done

echo "Database ready to accept connections."

bundle install

BUNDLE="bundle check"

until $BUNDLE
Expand Down

0 comments on commit 6325acd

Please sign in to comment.