Docker compose выдает ошибку контейнера, имя которой уже занято - PullRequest
0 голосов
/ 31 января 2020

Случай использования для меня заключается в том, что мне нужно использовать контейнеры сторонних сервисов, таких как Mongodb и InfluxDb, как часть моей полной настройки сервиса docker. Контейнеры из этих сторонних сервисов могут или не могут существовать на моей машине. Я хочу использовать один и тот же контейнер и не позволять docker compose создавать их заново, если они уже существуют, и создавать их заново, если они не существуют.

Я создал файл docker compose, как показано ниже:

version: "3.7"
services:
  mongo-database:
    container_name: mongo
    image: mongo:${Mongo_Service_Version}
    restart: always
    ports: 
     - "30041:27017"
    networks: 
     - internal-network
    volumes: 
     - data:/data/db
  service-test:
    container_name: service-test
    image:service1:v1
    restart: always
    ports: 
     - "30091:80"
    networks: 
     - internal-network
    depends_on: 
     - mongo-database

Я создал службу mon go, а затем создал тест службы приложения, который зависит от службы mon go. (Примечание: Service-test предназначен только для демонстрационных целей)

Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю команду docker -compose для запуска службы, я могу сделать это успешно. Компоновка docker сначала создает контейнер mon go, а затем контейнер службы, но проблема в том, что если контейнер mon go с таким именем и такой же конфигурацией уже существует, компоновка docker выдает ошибку, что контейнер с таким именем уже существует. Мой пример использования - я не хочу удалять старый контейнер вручную и воссоздавать его с помощью docker -compose. Я ожидаю, что docker compose достаточно умен, чтобы справиться с этой ситуацией. Docker compose не должен пытаться воссоздать контейнер, если он уже существует.

Если есть только обновление версии службы, и мы запускаем команду docker compose, docker compose ведет себя умно и не воссоздает контейнер mon go, но почему он не работает, когда контейнер mon go создается отдельно / вручную.

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