Rails 5.2, Docker Compose, Sidekiq, Redis.
Это файл docker-compose:
version: '3.6'
services:
redis:
image: 'redis:4.0-alpine'
command: redis-server
ports:
- '6379:6379'
volumes:
- 'redis:/data'
sidekiq:
depends_on:
- 'redis'
build: .
command: bundle exec sidekiq -C config/sidekiq.yml
volumes:
- './:/app'
env_file:
- '.env'
api:
build: .
volumes:
- './:/app'
working_dir: /app
command: puma
ports:
- 3000:3000
depends_on:
- db
- redis
environment:
DATABASE_URL: postgres://postgres@db
db:
image: postgres:10.3-alpine
volumes:
redis:
postgres:
Похоже, sidekiq не может найти мое приложение Rails.
Если я изменяю sidekiq для запуска следующим образом:
command: bundle exec sidekiq -C config/sidekiq.yml -r /app
, тогда я получаю эту ошибку:
Spring не смог найти ваш файл config / application.rb.Корень вашего проекта был обнаружен в / api, поэтому Spring искал /api/config/application.rb, но его не существует.Вы можете настроить корневой каталог вашего приложения, установив Spring.application_root в config / spring.rb.
Если я вместо этого добавлю параметр working_dir
в sidekiq:
sidekiq:
depends_on:
- 'redis'
build: .
command: bundle exec sidekiq -C config/sidekiq.yml
volumes:
- './:/app'
env_file:
- '.env'
working_dir:
- '/app'
тогда я получаю эту ошибку:
2019-05-27T20:27:59.770Z 1 TID-gr1e0d7n5 INFO: Booting Sidekiq 5.1.1 with redis options {:url=>"redis://redis:6379/0", :id=>"Sidekiq-server-PID-1"}
sidekiq_1 | could not connect to server: No such file or directory
sidekiq_1 | Is the server running locally and accepting
sidekiq_1 | connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Итак, как мне заставить sidekiq правильно запускаться в его контейнере?
Я видел эти ответы, которые похожи, но не являются этой конкретной ошибкой:
Вопрос 1
Вопрос 2
Вопрос 3
Вопрос4