docker-compose错误连接到redis + sidekiq

Car*_*mez 2 ruby-on-rails redis sidekiq docker

错误我说,我正在尝试使用docker构建容器,但无法连接sidekiq + redis,sidekiq_1 | Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)似乎sidekiq正在尝试连接至本地主机,但是由于我正在构建“理论上” redis + sidekiq + rails + postgres容器,因此无法使用本地主机,它应该在redis映像中。

我的docker-compose.yml文件是这样的:

version: '3'

services:
  postgres:
    image: postgres:10.5
    volumes:
      - my_app-postgres:/var/lib/postgresql/data

  redis:
    image: redis:4.0.11
    volumes:
      - my_app-redis:/var/lib/redis/data

  web:
    build: .
    command: bundle exec rails server -p 3000 -b '0.0.0.0'
    ports:
      - '3000:3000'
    depends_on:
      - postgres
      - redis
    volumes:
      - .:/my_app
    env_file:
      - .env

  sidekiq:
    build: .
    command: bundle exec sidekiq -C config/sidekiq.yml
    volumes:
      - .:/my_app
    depends_on:
      - postgres
      - redis
    env_file:
      - .env

volumes:
  my_app-postgres:
  my_app-redis:
Run Code Online (Sandbox Code Playgroud)

我在日志中看到的另一个有趣的“信息”是Booting Sidekiq 4.2.10 with redis options {:url=>nil}此URL可能是问题的原因吗?

在我的开发环境中,该应用程序运行良好,我尝试对自己拥有的东西进行“ dockerize”。我该如何进行这项工作?

Luk*_*ele 6

默认情况下,sidekiq尝试连接,127.0.0.1:6379但是您的sidekiq与redis不在同一个容器中,因此您需要将sidekiq配置为redis:6379用作redis主机,例如,使用初始化程序

 Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://redis:6379/12' }
 end
Run Code Online (Sandbox Code Playgroud)

看一下文档以了解更多详细信息:https : //github.com/mperham/sidekiq/wiki/Using-Redis

如果您打算稍后使用Kubernetes进行部署,则可以将所有容器放入容器中,然后它们将能够通过localhost连接,因为同一Kubernetes容器中的容器共享网络空间。要直接在Kubernetes集群内的pod中编程,可以使用我最近在GitHub上开源的名为DevSpace的工具:https : //github.com/covexo/devspace

  • 最好在ENV中设置URL,以便不需要初始化程序:`REDIS_URL = redis:// redis:6379 bundle exec sidekiq ...` (2认同)