【发布时间】:2016-11-12 13:43:59
【问题描述】:
我已经做了很多搜索,但我无法解决这个问题。
我有一个基本的 Rabbitmq 容器通过这个命令运行:
docker run -d --hostname rabbitmqhost --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3-management
我正在使用nameko 创建一个连接到该容器的微服务。这是一个基本的微服务模块main.py:
from nameko.rpc import rpc
class Service_Name(object):
name = "service_name"
@rpc
def service_endpoint(self, arg=None):
logging.info('service_one endpoint, arg = %s', arg)
此服务运行并使用以下命令从我的主机连接到 rabbitmq:
nameko run main --broker amqp://guest:guest@localhost
我想将服务放入 Docker 容器(称为 service_one),但是当我这样做并运行之前的 nameko 命令时,无论我如何尝试链接这两个容器,我都会得到 socket.error: [Errno 111] ECONNREFUSED。
正确的方法是什么?目的是将每个服务都放在一个容器中,所有服务都通过rabbit相互交谈。谢谢。
【问题讨论】:
-
“无论我如何尝试链接这两个容器......”你有什么尝试?
-
我尝试了链接和网络,结果发现每种方法的 ampq 连接值都略有错误。 (我使用的是 localhost 而不是 AMQ_PORT_5672_TCP_ADDR 等)。
标签: python docker rabbitmq nameko