gpt4 book ai didi

python - 如何连接到rabbitMQ docker容器?

转载 作者:行者123 更新时间:2023-12-02 19:51:06 28 4
gpt4 key购买 nike

我使用以下命令生成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的新手,我们将不胜感激。

谢谢。

最佳答案

我可以直接看到两个问题...

  • 没有用户名/密码
  • 没有端口转发。

  • 这是 Dockerfile
    FROM rabbitmq:management

    # Define environment variables.
    ENV RABBITMQ_DEFAULT_USER user
    ENV RABBITMQ_DEFAULT_PASS password

    ADD init.sh /init.sh

    RUN ["chmod", "+x", "/init.sh"]

    EXPOSE 15672

    # Define default command
    CMD ["/init.sh"]

    这是 init.sh
    #!/bin/sh

    # Create Rabbitmq user
    ( sleep 10 ; \
    rabbitmqctl add_user user password ; \
    rabbitmqctl set_user_tags user administrator ; \
    rabbitmqctl set_permissions -p / user ".*" ".*" ".*" ; \
    echo "*** User 'user' with password 'password' completed. ***" ; \
    echo "*** Log in the WebUI at port 15672 (example: http:/localhost:15672) ***") &

    # $@ is used to pass arguments to the rabbitmq-server command.
    # For example if you use it like this: docker run -d rabbitmq arg1 arg2,
    # it will be as you run in the container rabbitmq-server arg1 arg2
    rabbitmq-server $@

    Dockerfileinit.sh放在一个文件夹中,然后执行以下操作: docker build -t 'my_rabbit' .-这将生成您的图像。

    然后做 docker run -p5672:5672 -p15672:15672 my_rabbit 5672-这是RabbitMQ在其上发送其消息的端口。
    15672-这是RabbitMQ的管理GUI端口。

    如果您在本地计算机上运行此程序,则可以导航至: localhost:15672并输入用户名: user和密码: password和voila。它应该一切正常!

    关于python - 如何连接到rabbitMQ docker容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60657549/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com