【发布时间】:2023-03-04 18:35:01
【问题描述】:
我的最终目标是让运行不同进程的多个 Python 容器通过 ActiveMQ Artemis 容器相互通信。我对这一切都很陌生,所以作为开始,我只是想运行一个概念证明。
我按照 this youtube video 的指示建立了我的 Artemis 形象,一切都很好。我还关注了this tutorial,开始通过 stomp 向 Artemis 发送消息。当我在 Artemis 容器启动并运行时在本地(从 PyCharm)运行此脚本时,我可以在 Web 控制台中看到从 python 脚本生成的新队列。但是,当我将相同的 Python 脚本容器化时,会出现错误
Could not connect to host localhost, port 61613
Could not connect to host localhost, port 61613
Could not connect to host localhost, port 61613
Traceback (most recent call last):
File "/code/./main.py", line 5, in <module>
import sendAMessage
File "/code/sendAMessage.py", line 30, in <module>
conn.connect('admin', 'admin', wait=True)
File "/usr/local/lib/python3.9/site-packages/stomp/connect.py", line 164, in connect
self.transport.start()
File "/usr/local/lib/python3.9/site-packages/stomp/transport.py", line 109, in start
self.attempt_connection()
File "/usr/local/lib/python3.9/site-packages/stomp/transport.py", line 819, in attempt_connection
raise exception.ConnectFailedException()
我尝试在 docker 中建立一个网络并将两个容器都放在上面。 我正在使用
运行我的python容器docker run --rm --net my-network -p 5000:5000 myimage
我感觉我错误地暴露了一个端口,或者类似的愚蠢的东西,但我对容器还不够熟悉,不知道从哪里开始寻找。
【问题讨论】:
-
Could not connect to host localhost-localhost容器内部不会解析到您的 IP(除非您正在运行连接到host网络的容器)。如果您在同一个docker network中运行服务,那么您应该能够通过容器名称(或服务名称,如果您使用 docker-compose 编排容器)来解析容器。
标签: python docker activemq-artemis artemiscloud