如何使用Docker Compose连接到Redis容器?

时间:2017-02-21 20:02:49

标签: docker redis docker-compose

这个docker-compose.yml似乎运作正常:

version: '3'
services:
  web:
    image: web-app
    command: bundle exec rackup
    ports:
     - "9292:9292"
    links:
      - redis
  redis:
    image: redis

命令:

docker build -t web-app .; docker-compose up

Web App期待REDIS_URL配置。 Web App Dockerfile:

ENV REDIS_URL redis:6379

似乎Web App无法连接到Redis:

Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED):

那么,Web应用程序的Redis URL是什么?

我是否需要公开Redis端口(6379)?

编辑:

感谢@Andy Shinn,我看到redis网址应为redis://6379 现在我得到Errno::EINVAL - Invalid argument - connect(2) for 0.0.24.235:6379。这可能与Redis v 3.2.8有关。我会尝试另一个版本,看看它是否有效。

编辑#2:

3.2.8可以在我的本地计算机上使用该应用程序,但这不是问题。

1 个答案:

答案 0 :(得分:18)

问题是redis是“变量”,将在Dockerfile中进行插值。

ENV REDIS_URL redis:6379

但Redis网址应以 文字 redis开头。

所以,修复程序正在更新docker compose:

redis_db:
  image: redis:3.2.8

所需的配置是:

REDIS_URL=redis://redis_db:6379

感谢BMitch和Andy Shinn帮助我解决这个问题。