gpt4 book ai didi

docker - Docker/Boot2Docker/Fig + RabbitMQ主机问题; pika.exceptions.AMQPConnectionError:[Errno -2]名称或服务未知

转载 作者:行者123 更新时间:2023-12-02 19:43:08 25 4
gpt4 key购买 nike

我刚刚开始学习RabbitMQ和Docker / Fig。我有一个非常简单的示例,其中包含3个无花果容器,每个容器分别用于Rabbit Server,生产者和使用者。在/etc/hosts中,我已将boot2docker ip设置为dockerhost的别名:

/etc/hosts
192.168.59.103 dockerhost

当我对RabbitMQ服务器进行 fig up -d编码时,一切正常运行。我可以打开浏览器并转到 dockerhost:PORTNUM并访问RabbitMQ控制面板。

在我的RabbitMQ生产者中,我将连接主机设置为 dockerhost:
/producer.py
connection = pika.BlockingConnection(pika.ConnectionParameters(
host=config['RabbitMQ']['hostname'],
...
))

我的配置文件如下所示:
/config.ini
[RabbitMQ]
hostname = dockerhost

但是,当我在RabbitMQ生产者上运行 fig up -d时,出现连接错误:
rabbitworker_1 |   File "/usr/local/lib/python3.4/site-packages/pika/adapters/blocking_connection.py", line 301, in _adapter_connect
rabbitworker_1 | raise exceptions.AMQPConnectionError(error)
rabbitworker_1 | pika.exceptions.AMQPConnectionError: [Errno -2] Name or service not known`

通过直接在RabbitMQ主机名中输入 boot2docker ip而不是 dockerhost别名,可以使RabbitMQ生产商正常工作:
/config.ini
[RabbitMQ]
hostname = 192.168.59.103

上面的更改使一切正常工作。

我的问题是如何通过使用 hostname = dockerhost而不是输入实际IP地址来使RabbitMQ生产商正常工作?

更新资料

这是我的RabbitMQ服务器 fig.yml,可与 dockerhost一起使用:
rabbit:
image: mikaelhg/docker-rabbitmq
ports:
- "5672:5672"
- "15672:15672"

这是我的RabbitMQ生产者 fig.ymlDockerfile,它们与 dockerhost不兼容:
/fig.yml
rabbitworker:
build: .
volumes:
- .:/opt/worker
- ./log:/var/log
command: supervisord -n

/Dockerfile
FROM python3-rabbit-producer

COPY . /opt/worker
WORKDIR /opt/worker

RUN pip3.4 install -r requirements.txt

CMD ["supervisord", "-n"]

最佳答案

当您使用无花果时,建议您通过创建1个唯一的fig.yml文件并链接容器以进行通信来使用无花果的真正功能。因此,您将编辑当前的RabbitMQ生产者fig.yml,从而得到:

rabbit:
image: mikaelhg/docker-rabbitmq
ports:
- "5672:5672"
- "15672:15672”

rabbitworker:
build: .
volumes:
- .:/opt/worker
- ./log:/var/log
links:
- rabbit
command: supervisord -n

然后编辑您的配置文件以获取:
/config.ini
[RabbitMQ]
hostname = rabbit

如果您确实想保持配置文件不变并使用 dockerhost,则可以通过以下方式在 fig.yml中编辑Rabbitworker链接:
    links: 
- rabbit:dockerhost

但是您必须知道 dockerhost将解析为RabbitMQ服务器容器IP(而不是主机IP)。

关于docker - Docker/Boot2Docker/Fig + RabbitMQ主机问题; pika.exceptions.AMQPConnectionError:[Errno -2]名称或服务未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29284464/

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