从 docker 中的另一个容器连接到 redis

Connect to redis from another container in docker

我有应用程序,它使用了 Tornado 和 tornado-redis。 [docker images 中的图像 "app"] 我启动redis:

docker run --name some-redis -d redis

然后我想 link 我的应用程序与 redis:

docker run --name some-app --link some-redis:redis app

我有错误:

Traceback (most recent call last):
  File "./app.py", line 41, in <module>
    c.connect()
  File "/usr/local/lib/python3.4/site-packages/tornadoredis/client.py", line 333
, in connect
    self.connection.connect()
  File "/usr/local/lib/python3.4/site-packages/tornadoredis/connection.py", line
 79, in connect
    raise ConnectionError(str(e))
tornadoredis.exceptions.ConnectionError: [Errno 111] Connection refused

我已经用本地的tornado 和redis 测试了我的代码,它可以工作。

中的问题
c = tornadoredis.Client()
c.connect()

为什么我的应用无法连接到 redis-container?如何解决?我使用标准端口 6379。

谢谢!

tornadoredis 尝试在 localhost 上使用 Redis。 (参见来源 here

所以你需要通知 tornadoredis redis 在 运行 的位置(因为 docker 图像在 localhost 上不是 运行)。

例如:

c = tornadoredis.Client(host="<hostname>")
c.connect()

在您的具体情况下,将 "redis" 替换为 "<hostname>"