Как настроить sidekiq & redis без использования docker-compose для рельсов? - PullRequest
0 голосов
/ 21 июня 2019

Я хочу внедрить sidekiq в мое приложение rails. Я успешно создаю образ и контейнер. Но когда я пытаюсь выполнить задание контейнера в приложении не удается найти Redis. Как я могу связать контейнер my-app (у которого есть собственный IP: порт) с контейнером redis (у которого есть собственный IP: порт).

Я думаю, что проблема скрывается в sidekiq.rb. Но я не уверен

sidekiq_config = { url: "<container url>" }

Sidekiq.configure_server do |config|
  config.redis = sidekiq_config
end

Sidekiq.configure_client do |config|
  config.redis = sidekiq_config
end

Я хочу запустить 2 контейнера: my-app & redis. В my-app контейнере сидекик должен знать, как пинговать redis контейнер.

PS Мой ̶r̶e̶l̶i̶g̶i̶o̶n̶ наставник не позволяет мне использовать docker-compose, так что это довольно сложно

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Я обнаружил, что мы можем легко соединить 2 контейнера с докером, используя --link

sudo docker run --name my-application --link my-redis-container:redis

Эта ссылка была полезна для меня. И здесь нам на самом деле не нужно использовать docker-compose

0 голосов
/ 21 июня 2019

Учитывая ваше заявление:

... ваше приложение (у которого есть собственный IP: порт) с контейнером Redis (у которого есть собственный IP: порт).

Возможно, вы захотите проверить, как выглядит ваш "<container url>". Для большей ясности, вот как я предлагаю это выглядит:

конфиг / Инициализаторы / sidekiq.rb

Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://redis.example.com:7372/0' }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://redis.example.com:7372/0' }
end

Тогда прямо в вашем application.rb определите адаптер очереди как sidekiq

конфиг / application.rb

config.active_job.queue_adapter = :sidekiq

Также обратите внимание, что sidekiq ищет файл конфигурации в config/sidekiq.yml и, если файл присутствует, он запускается с определенной конфигурацией. Так что проверьте, если у вас установлен конфиг. Это может быть основной проблемой, которая у вас есть, поскольку вы не дали достаточного понятия о том, что вы сделали.

конфиг / sidekiq.yml

---
:verbose: false
:concurrency: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
:timeout: 30
:queues:
  - [low_priority, 1]
  - [high_priority, 2] # high priority

Для получения более подробной информации о том, как вы используете Redis с Sidekiq, пожалуйста, отметьте https://github.com/mperham/sidekiq/wiki/Using-Redis

...