如何在不使用 docker-compose for rails 的情况下配置 sidekiq&redis?
How to configure sidekiq&redis without using docker-compose for rails?
我想在我的 rails 应用程序中实施 sidekiq。我成功创建图像和容器。但是当我尝试在应用程序中执行作业容器时找不到 redis。我如何将我的应用程序容器(它有自己的IP:port)与redis容器(它有它自己的IP:port)连接起来。
我认为问题出在 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
容器中,sidekiq 应该知道如何 ping redis
容器。
PS
我的 ̶r̶e̶l̶i̶g̶i̶o̶n̶ 导师不允许我使用 docker-compose 所以这很棘手
考虑你的陈述:
...your app (which has its own IP:Port) with Redis container (which has it's own IP:Port).
您可能想检查一下 "<container url>"
的外观。为了更深入地了解,我建议它看起来像这样:
config/initializers/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
config/application.rb
config.active_job.queue_adapter = :sidekiq
此外,请注意 sidekiq 在 config/sidekiq.yml
中查找配置文件,如果该文件存在,它将以定义的配置启动。因此,请检查您是否设置了配置。这可能是您遇到的主要问题,因为您没有就您所做的事情提供足够的线索。
config/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
我发现我们可以使用 --link
轻松地将 2 个容器与 docker 连接起来
sudo docker run --name my-application --link my-redis-container:redis
这个 Link 对我很有帮助。而这里我们实际上并不需要使用 docker-compose
我想在我的 rails 应用程序中实施 sidekiq。我成功创建图像和容器。但是当我尝试在应用程序中执行作业容器时找不到 redis。我如何将我的应用程序容器(它有自己的IP:port)与redis容器(它有它自己的IP:port)连接起来。
我认为问题出在 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
容器中,sidekiq 应该知道如何 ping redis
容器。
PS 我的 ̶r̶e̶l̶i̶g̶i̶o̶n̶ 导师不允许我使用 docker-compose 所以这很棘手
考虑你的陈述:
...your app (which has its own IP:Port) with Redis container (which has it's own IP:Port).
您可能想检查一下 "<container url>"
的外观。为了更深入地了解,我建议它看起来像这样:
config/initializers/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
config/application.rb
config.active_job.queue_adapter = :sidekiq
此外,请注意 sidekiq 在 config/sidekiq.yml
中查找配置文件,如果该文件存在,它将以定义的配置启动。因此,请检查您是否设置了配置。这可能是您遇到的主要问题,因为您没有就您所做的事情提供足够的线索。
config/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
我发现我们可以使用 --link
sudo docker run --name my-application --link my-redis-container:redis
这个 Link 对我很有帮助。而这里我们实际上并不需要使用 docker-compose