Как связать два собственных Docker контейнера по rabbitmq - PullRequest
0 голосов
/ 16 января 2020

Я строю очень простой проект. Два python скрипта; producer.py и consumer.py. Производитель отправляет случайные числа, потребитель печатает их. Он работает без docker.

Я создаю два docker образа для потребителя и производителя и хочу «передать» его с помощью docker -compose, когда я запускаю docker -compose файл я вижу это:

emit_log_1  | Traceback (most recent call last):
emit_log_1  |   File "emit_log.py", line 7, in <module>
emit_log_1  |     connection = pika.BlockingConnection(
emit_log_1  |   File "/usr/local/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 359, in __init__
emit_log_1  |     self._impl = self._create_connection(parameters, _impl_class)
emit_log_1  |   File "/usr/local/lib/python3.8/site-packages/pika/adapters/blocking_connection.py", line 450, in _create_connection
emit_log_1  |     raise self._reap_last_connection_workflow_error(error)
emit_log_1  | pika.exceptions.AMQPConnectionError
1_emit_log_1 exited with code 1

И точно так же для получения:

Docker -compose.yml:

version: '3'

services:
 rabbitmq:
  image: rabbitmq:3-management
  ports:
   - "5672:5672"
   - "15672:15672"


 emit_log:
  build:
   context: .
   dockerfile: Dockerfile.emit_log
  ports:
   - "8081:8081"
   - "8001:8001"
  links:
   - rabbitmq


 receive:
  build:
   context: .
   dockerfile: Dockerfile.receive
  ports:
   - "8082:8082"
   - "8002:8002"
  links:
   - rabbitmq

1 Ответ

0 голосов
/ 16 января 2020

Я подозреваю, что вы, возможно, пытаетесь подключиться к "localhost" из вашей излучающей службы, которая может указывать на сам контейнер localhost. Compose будет объединять в сеть контейнеры по умолчанию. Если ваши строки подключения ранее были на локальном хосте, вам необходимо обновить их, чтобы они указывали на нужный контейнер.

Например, если вы ранее подключались к localhost:5672 от своего производителя или потребителя, и они подключены к сети. в вашей docker композиции с вашим экземпляром rabbitmq вам нужно будет подключиться с помощью rabbitmq:5672

Подробнее о сети в Compose: https://docs.docker.com/compose/networking/

...