首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从码头集装箱访问在本地机器上运行的兔子on

从码头集装箱访问在本地机器上运行的兔子on
EN

Stack Overflow用户
提问于 2016-08-25 13:07:37
回答 3查看 1.9K关注 0票数 1

我想测试一个码头映像,运行订阅一个rabbitmq队列的python脚本。我已经在本地机器上运行了rabbitmq,并且希望测试在同一台机器上运行的docker容器,并让它订阅本地的rabbimq服务器。

我希望脚本读取在docker命令中设置的环境变量'QUEUE_IP‘。

python脚本:

代码语言:javascript
复制
#!/usr/bin/env python
import pika

host = os.environ.get('QUEUE_IP')

connection = pika.BlockingConnection(pika.ConnectionParameters(
    host=host))

channel = connection.channel()

channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
   print(" [x] Received %r" % body)

channel.basic_consume(callback,
                  queue='hello',
                  no_ack=True)

print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

如果QUEUE_IP = 127.0.0.1,并且我也尝试使用机器的本地ip地址,它就不能工作,但是我只得到了

代码语言:javascript
复制
pika.exceptions.ProbableAuthenticationError

从码头集装箱访问本地的兔子Is有什么简单的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-06 18:42:56

一个可行的解决方案是简单地将--net=host参数添加到docker运行中,例如:

代码语言:javascript
复制
docker run -d --net=host my/container

这样,主机的网络就可以与容器共享,并且可以使用本地主机ip (127.0.0.1)访问rabbimq服务器。

票数 1
EN

Stack Overflow用户

发布于 2016-08-25 13:22:34

根据码头CLI博士

有时,您需要从容器中连接到Docker主机。要启用此功能,请使用-- address标志将Docker主机的IP地址传递给容器.若要查找主机地址,请使用ip addr show命令。

所以,您需要做的就是将:QUEUE_URL设置为ip addr show的输出。

票数 2
EN

Stack Overflow用户

发布于 2019-11-12 18:20:19

在尝试了很多解决方案之后,我想出了一个可行的解决方案。

您需要在码头容器中使用rabbitMQ主机(主要是),在这里我们试图连接到rabbitMQ(这是本地设置的)。

代码语言:javascript
复制
host - host.docker.internal
port - 5672
user - guest (default)
password - guest (default)

我相信这会为很多人节省时间。

谢谢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39146230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档