从 docker 容器访问本地计算机上的 rabbitmq 运行
Accessing rabbitmq running on local machine from docker container
我想测试一个docker图像运行宁一个python脚本订阅rabbitmq队列。
我的本地机器上有 rabbitmq 运行ning,想在同一台机器上测试 docker 容器 运行ning 并让它订阅本地 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
有什么简单的方法可以从 docker 容器访问本地 rabbitmq 吗?
Sometimes you need to connect to the Docker host from within your
container. To enable this, pass the Docker host’s IP address to the
container using the --add-host flag. To find the host’s address, use
the ip addr show
command.
所以你需要做的就是设置:QUEUE_URL
到ip addr show
的输出。
一个可行的解决方案是简单地将 --net=host 参数添加到 docker 运行,例如:
docker run -d --net=host my/container
这样宿主机的网络就和容器共享了,它可以用localhost ip (127.0.0.1)访问rabbimq服务器
在尝试了很多解决方案之后,我想出了可行的解决方案。
您需要在 docker 容器中使用 rabbitMQ 主机(主要),我们正在尝试连接到 rabbitMQ(本地设置)
host - host.docker.internal
port - 5672
user - guest (default)
password - guest (default)
我相信这会为很多人节省时间。
谢谢。
我想测试一个docker图像运行宁一个python脚本订阅rabbitmq队列。 我的本地机器上有 rabbitmq 运行ning,想在同一台机器上测试 docker 容器 运行ning 并让它订阅本地 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
有什么简单的方法可以从 docker 容器访问本地 rabbitmq 吗?
Sometimes you need to connect to the Docker host from within your container. To enable this, pass the Docker host’s IP address to the container using the --add-host flag. To find the host’s address, use the
ip addr show
command.
所以你需要做的就是设置:QUEUE_URL
到ip addr show
的输出。
一个可行的解决方案是简单地将 --net=host 参数添加到 docker 运行,例如:
docker run -d --net=host my/container
这样宿主机的网络就和容器共享了,它可以用localhost ip (127.0.0.1)访问rabbimq服务器
在尝试了很多解决方案之后,我想出了可行的解决方案。
您需要在 docker 容器中使用 rabbitMQ 主机(主要),我们正在尝试连接到 rabbitMQ(本地设置)
host - host.docker.internal
port - 5672
user - guest (default)
password - guest (default)
我相信这会为很多人节省时间。
谢谢。