无法将 python 容器连接到 activeMQ Artemis 容器
Unable to connect python container to activeMQ Artemis container
我的最终目标是让多个 Python 容器 运行 不同的进程通过 ActiveMQ Artemis 容器相互通信。我对所有这些都不熟悉,所以作为开始,我只是想获得概念证明 运行ning。
我按照 this youtube video to build my image of Artemis and everything jives nicely there. I also followed this tutorial 的说明开始通过 stomp 向 Artemis 发送消息。当我在本地 运行 这个脚本(来自 PyCharm)而我的 Artemis 容器已启动并且 运行 正在运行时,我可以在 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
我感觉我没有正确地暴露一个端口,或者类似的愚蠢的东西,但我对容器还不够熟悉,不知道从哪里开始寻找。
python 脚本在您的本地主机上运行,因为 -p 5000:5000
参数公开了本地主机上 ActiveMQ Artemis 容器的端口 5000。
要从同一 docker 网络 (--net my-network
) 中的另一个容器访问 ActiveMQ Artemis 容器,python 脚本应使用 ActiveMQ Artemis 容器名称 (--name my-artemis
),即
docker run --rm --name my-artemis --net my-network -p 5000:5000 myimage
Docker 使部署微服务应用程序变得非常容易,但它对生产环境有一些限制。我会看一下开源 ArtemisCloud.io 项目,它是容器镜像的集合,提供了一种在 Kubernetes 上部署 Apache ActiveMQ Artemis Broker 的方法。
masseyb 的回答帮我指出了正确的方法。
我修复它的方法是获取我的 ActiveMQ 容器的 IP 地址(docker 网络检查)并将其放入 .py 脚本而不是 'localhost'。
hosts = [('172.19.0.2', 61613)]
我的最终目标是让多个 Python 容器 运行 不同的进程通过 ActiveMQ Artemis 容器相互通信。我对所有这些都不熟悉,所以作为开始,我只是想获得概念证明 运行ning。
我按照 this youtube video to build my image of Artemis and everything jives nicely there. I also followed this tutorial 的说明开始通过 stomp 向 Artemis 发送消息。当我在本地 运行 这个脚本(来自 PyCharm)而我的 Artemis 容器已启动并且 运行 正在运行时,我可以在 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
我感觉我没有正确地暴露一个端口,或者类似的愚蠢的东西,但我对容器还不够熟悉,不知道从哪里开始寻找。
python 脚本在您的本地主机上运行,因为 -p 5000:5000
参数公开了本地主机上 ActiveMQ Artemis 容器的端口 5000。
要从同一 docker 网络 (--net my-network
) 中的另一个容器访问 ActiveMQ Artemis 容器,python 脚本应使用 ActiveMQ Artemis 容器名称 (--name my-artemis
),即
docker run --rm --name my-artemis --net my-network -p 5000:5000 myimage
Docker 使部署微服务应用程序变得非常容易,但它对生产环境有一些限制。我会看一下开源 ArtemisCloud.io 项目,它是容器镜像的集合,提供了一种在 Kubernetes 上部署 Apache ActiveMQ Artemis Broker 的方法。
masseyb 的回答帮我指出了正确的方法。
我修复它的方法是获取我的 ActiveMQ 容器的 IP 地址(docker 网络检查)并将其放入 .py 脚本而不是 'localhost'。
hosts = [('172.19.0.2', 61613)]