从Docker中的另一个容器连接到Redis [英] Connect to redis from another container in docker

查看:1027
本文介绍了从Docker中的另一个容器连接到Redis的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用,该应用使用了Tornado和 tornado-redis 。 [ docker图像中的图像 app]
我开始redis:

  docker run --name some-redis -d redis 

然后我要链接我的带有redis的应用程序:

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

我有错误:

 回溯(最近一次通话最近):
文件 ./app.py,第41行,在< module>中
c.connect()
文件 /usr/local/lib/python3.4/site-packages/tornadoredis/client.py,连接
中的第333行
self.connection.connect()
文件 /usr/local/lib/python3.4/site-packages/tornadoredis/connection.py,行
79,在connect
中引发ConnectionError (str(e))
tornadoredis.exceptions.ConnectionError:[Errno 111]连接被拒绝

我已经用本地龙卷风和redis测试了我的代码,并且可以正常工作。

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

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



谢谢!

解决方案

tornadoredis 尝试在 localhost 上使用Redis。 (请参见来源此处



因此,您需要通知 tornadoredis Redis的运行位置(由于Docker镜像未在 localhost )。



例如:

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

在您的特定情况下,用 redis 代替< hostname> 。 / p>

I have app, that used Tornado and tornado-redis. [image "app" in docker images] I start redis:

docker run --name some-redis -d redis

Then I want to link my app with redis:

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

And I have error:

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

I have tested my code with local tornado and redis, and it works. The problem in

c = tornadoredis.Client()
c.connect()

Why my app cant connet to redis-container? How to fix that? I use standart port 6379.

Thanks!

解决方案

tornadoredis attempts to use redis on localhost. (See source here)

So you need to inform tornadoredis where redis is running (since to the docker image it is not running on localhost).

For example:

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

In your specific case, substitute "redis" for "<hostname>".

这篇关于从Docker中的另一个容器连接到Redis的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆