【发布时间】:2017-06-19 13:39:37
【问题描述】:
我正在设置我的 Docker 环境并尝试使用 docker-compose up 让 sidekiq 与我的其他服务一起启动,但 sidekiq 在尝试连接到 错误 redis 时抛出错误网址:
redis_1 | 1:M 19 Jun 02:04:35.137 * The server is now ready to accept connections on port 6379
sidekiq_1 | Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)
我非常确信我的 Rails 应用程序中没有任何引用可以让 Sidekiq 连接到 localhost,而不是在 docker-compose.yml 中创建的 redis 服务:
version: '3'
services:
db:
image: postgres
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- db
redis:
image: redis:3.2-alpine
command: redis-server
ports:
- 6379:6379
volumes:
- redis:/var/lib/redis/data
sidekiq:
depends_on:
- db
- redis
build: .
command: bundle exec sidekiq -C config/sidekiq.yml
volumes:
- .:/app
env_file:
- .env
volumes:
redis:
postgres:
在config/initializers/sidekiq.rb 我已经硬编码了redis url:
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://redis:6379/0' }
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://redis:6379/0' }
end
此时我被难住了。我已经完全删除了运行docker-compose build 然后docker-compose up 多次运行的所有现有容器,没有任何变化。
我已经在我的应用程序文件夹中进行了全局搜索,寻找对 127.0.0.1:6379 和 localhost:6379 的任何剩余引用,但没有找到任何命中,所以我不确定为什么 sidekiq 一直在 127.0.0.1 上寻找 redis这一点。
【问题讨论】:
-
localhost:6379是 sidekiq 在不存在其他配置时使用的默认配置。所以问题是为什么 sidekiq 忽略了您的配置..config/initializers/sidekiq.rb中还有其他内容吗?还是整个文件? -
@eiko 这就是我提供的全部文件内容。
标签: ruby-on-rails ruby docker docker-compose sidekiq