【发布时间】:2020-03-12 15:48:17
【问题描述】:
我正在使用命令生成一个 rabbitMQ 容器 -
docker run -d --hostname localhost --name rabbit-tox rabbitmq:3
这是 docker ps -a 输出 -
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d95830a43d9 rabbitmq:3 "docker-entrypoint..." 6 minutes ago Up 6 minutes 4369/tcp, 5671-5672/tcp, 25672/tcp rabbit-tox
docker 检查 6d95830a43d9 输出 --
[
{
"Id": "6d95830a43d90557009a783779442927ca4bf211198f5c4eb420b7bb78b5de08",
"Created": "2020-03-12T15:34:12.661119753Z",
"Path": "docker-entrypoint.sh",
"Args": [
"rabbitmq-server"
],
"State": {
"Status": "running",
"Running": true,
. . .
"EndpointID": "",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "",
"EndpointID": "",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
我正在尝试使用代码连接到容器 -
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
但它给出了错误 -
Traceback (most recent call last):
File "rmqtest.py", line 4, in <module>
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1'))
File "/home/mlokur/venv/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 359, in __init__
self._impl = self._create_connection(parameters, _impl_class)
File "/home/mlokur/venv/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 450, in _create_connection
raise self._reap_last_connection_workflow_error(error)
pika.exceptions.AMQPConnectionError
对不起,我是rabbitMQ的新手,任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
需要绑定rabbit使用的端口或者使用
--net=host -
鉴于 docker inspect 的输出,您应该尝试绑定的 ip 是 172.17.0.2,而不是 127.0.0.1
-
是的,感谢您的回答。我想我一发布这个就必须使用 172.17.0.2,我觉得很蹩脚。
-
@Groot221,我建议使用 docker-compose
-
@Eitank 我希望在 tox 中运行这个容器进行集成测试。我已经在 tox 中生成 postgres 作为另一个容器。是否可以在 tox 中使用 docker -compose?