Запуск нескольких док-контейнеров, прослушивающих один и тот же порт для сообщений RabbitMQ - PullRequest
0 голосов
/ 30 января 2019

Я запускаю контейнер RabbitMQ с помощью следующей команды:

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

Порт 15672 предназначен для консоли управления, основной порт для связи - 5672

* 1007.* У меня есть несколько образов докера .NET Core, которые прослушивают / подписываются на порт 5672 для прослушивания входящих сообщений в очередь и отправки сообщений в очередь.

Может быть / будет несколько экземпляров («работников»).dll работает.Запуск одного экземпляра подходит для локальной разработки, но в PROD будет работать несколько экземпляров.

enter image description here

Когда я пытаюсь запустить свой образ докера .dll(т.е. Process1.dll)

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

это указывает, что контейнер уже привязан к этому порту на 0.0.0.0:/5672

Я предполагаю, что файл docker-compose будетнеобходимо выполнить то, к чему я обращаюсь.

Как мне выполнить эти несколько контейнеров на одном и том же порту?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Рабочий процесс RabbitMQ заключается в том, что посреднику необходимо прослушивать порт 5672. Производителям и потребителям необходимо устанавливать исходящие соединения с этим портом на посреднике, но им самим не нужно принимать входящие соединения.

Это означает, что вы можете удалить опцию --publish из ваших рабочих контейнеров.Они по-прежнему смогут устанавливать исходящие подключения к RabbitMQ, и у вас не будет конфликта портов.

0 голосов
/ 30 января 2019

Невозможно запустить несколько контейнеров на одном и том же порту на хосте.Или вам нужно изменить свое решение.Например изменить порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...