2016-08-25 175 views
0

我想测试一个运行预订rabbitmq队列的python脚本的docker镜像。 我在我的本地机器上运行rabbitmq,并且想要测试在同一台机器上运行的docker容器,并让它订阅本地的rabbimq服务器。从Docker容器中访问在本地机器上运行的rabbitmq

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

的Python脚本:

#!/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地址也试过,但我只得到

pika.exceptions.ProbableAuthenticationError 

是有从码头集装箱访问本地rabbitmq的简单方法吗?

回答

0

的作品是简单地添加--net =主机参数泊坞窗过程A的解决方案,例如:

docker run -d --net=host my/container 

这样,主机的网络与容器共享,它可以访问rabbimq服务器与本地主机ip(127.0.0.1)

1

根据Docker CLI docs

有时你需要从 容器内连接到主机泊坞窗。要启用此功能,请使用--add-host标志将Docker主机的IP地址传递给 容器。要查找主机地址,请使用 命令ip addr show

所以你需要做的就是设置:QUEUE_URLip addr show的输出。

相关问题