我想测试一个码头映像,运行订阅一个rabbitmq队列的python脚本。我已经在本地机器上运行了rabbitmq,并且希望测试在同一台机器上运行的docker容器,并让它订阅本地的rabbimq服务器。
我希望脚本读取在docker命令中设置的环境变量'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从码头集装箱访问本地的兔子Is有什么简单的方法吗?
发布于 2016-12-06 18:42:56
一个可行的解决方案是简单地将--net=host参数添加到docker运行中,例如:
docker run -d --net=host my/container这样,主机的网络就可以与容器共享,并且可以使用本地主机ip (127.0.0.1)访问rabbimq服务器。
发布于 2016-08-25 13:22:34
根据码头CLI博士
有时,您需要从容器中连接到Docker主机。要启用此功能,请使用-- address标志将Docker主机的IP地址传递给容器.若要查找主机地址,请使用
ip addr show命令。
所以,您需要做的就是将:QUEUE_URL设置为ip addr show的输出。
发布于 2019-11-12 18:20:19
在尝试了很多解决方案之后,我想出了一个可行的解决方案。
您需要在码头容器中使用rabbitMQ主机(主要是),在这里我们试图连接到rabbitMQ(这是本地设置的)。
host - host.docker.internal
port - 5672
user - guest (default)
password - guest (default)我相信这会为很多人节省时间。
谢谢。
https://stackoverflow.com/questions/39146230
复制相似问题