运行多个Docker容器在同一端口上侦听RabbitMQ消息

时间:2019-01-30 16:26:47

标签: docker .net-core docker-compose rabbitmq

我正在使用以下命令运行RabbitMQ容器:

docker run --name sl-rabbitmq-mgmt-dev --publish=15672:15672/tcp --publish=5672:5672/tcp --hostname=rabbitmq --detach rabbitmq:3-management

端口15672用于管理控制台,主要的通信端口是5672

我有多个.NET Core docker映像,它们侦听/订阅端口5672,以侦听队列的传入消息,并将消息推送到队列。

.dll可能/将有多个实例(“工作者”)运行。运行一个实例可以进行本地开发,但多个实例将在PROD中运行。

enter image description here

当我尝试运行.dll(即Process1.dll)的docker映像时

docker run --rm --publish=5672:5672/tcp --detach process1:latest

它指示容器已在0.0.0.0:/5672上绑定到该端口

我假设将需要一个docker-compose文件来完成我打算进行的工作。

如何在同一端口上运行这些多个容器?<​​/ p>

2 个答案:

答案 0 :(得分:0)

不可能在主机的同一端口上运行多个容器。 或者您需要更改解决方案。例如更改端口。

答案 1 :(得分:0)

RabbitMQ工作流程是,代理需要侦听端口5672。生产者和消费者需要与代理上的该端口建立出站连接,但他们本身并不需要接受入站连接。

这意味着您可以从工作容器中删除--publish选项。他们仍然可以与RabbitMQ建立出站连接,并且您不会发生端口冲突。