У меня есть две отдельные службы в разных каталогах, настроенные для одной сети докеров.

Сервис PUB является издателем RabbitMQ. Его файл docker-compose запускает службы PUB и RabbitMQ.

Сервис WRK - это рабочий RabbitMQ. Его файл docker-compose запускает службы WRK и RabbitMQ.

docker-compose up -d PUB запустит PUB и RabbitMQ, но затем выполнение docker-compose up -d WKR завершится ошибкой, поскольку порт RabbitMQ уже выделен. Bind for 0.0.0.0:15672 failed: port is already allocated

Однако docker-compose up -d WRK запускает и WRK, и RabbitMQ, если я еще не запустил PUB.

Как мне настроить файлы docker-compose.yml так, чтобы, если RabbitMQ уже запущен, он не пытался запустить RabbitMQ, а просто подключался к существующему экземпляру?

Docker-compose.yml для службы PUB:

services:
  PUB:
    image: pub-image
    networks:
      - myNet
    environment:
      RMQ_URI: amqp://guest@rabbitmq:5672//
    ports:
      - 127.0.0.1:5000:5000/tcp
    links:
      - rabbitmq:rabbitmq
    depends_on:
      - rabbitmq

  rabbitmq:
    image: rabbitmq:3.8.14-management
    networks:
      - myNet
    ports:
      - 5672:5672
      - 15672:15672

networks:
  myNet:
    name: myNet
    driver: bridge

Docker-compose.yml для службы WRK:

services:
  WRK:
    image: wrk-image
    networks:
      - myNet
    environment:
      RMQ_URI: amqp://guest@rabbitmq:5672//
    links:
      - rabbitmq:rabbitmq
    depends_on:
      - rabbitmq

  rabbitmq:
    image: rabbitmq:3.8.14-management
    networks:
      - myNet
    ports:
      - 5672:5672
      - 15672:15672

networks:
  myNet:
    name: myNet
    driver: bridge
0
Swoop 20 Мар 2021 в 18:21

1 ответ

Лучший ответ

Поскольку вы не используете тома в этих составных файлах, их можно объединить:

services:
  WRK:
    image: wrk-image
    networks:
      - myNet
    environment:
      RMQ_URI: amqp://guest@rabbitmq:5672//
    links:
      - rabbitmq:rabbitmq
    depends_on:
      - rabbitmq
  PUB:
    image: pub-image
      networks:
        - myNet
      environment:
        RMQ_URI: amqp://guest@rabbitmq:5672//
      ports:
        - 127.0.0.1:5000:5000/tcp
      links:
        - rabbitmq:rabbitmq
      depends_on:
        - rabbitmq

  rabbitmq:
    image: rabbitmq:3.8.14-management
    networks:
      - myNet
    ports:
      - 5672:5672
      - 15672:15672

networks:
  myNet:
    name: myNet
    driver: bridge
2
Adam P. 20 Мар 2021 в 15:53