Компоновка Docker в другом каталоге влияет на другие контейнеры - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть проблема.Я использовал мой docker-compose файл для одного проекта.Затем я скопировал его в другой каталог, чтобы запустить другие контейнеры.Но всякий раз, когда я делаю это, он воссоздает существующие контейнеры или, если я использую команду down, он также уничтожает контейнеры из другого каталога, что может быть не так?

Вот моя конфигурация.

version: '3.5'

services:
  postgres:
    image: postgres
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      PGDATA: /data/postgres
    volumes:
      - postgres:/data/postgres
    ports:
      - "5440:5432"
    networks:
      - postgres
    restart: unless-stopped

  pgadmin:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: rootme
    volumes:
      - pgadmin:/root/.pgadmin
    ports:
      - "8440:80"
    networks:
      - postgres
    restart: unless-stopped

networks:
  postgres:
    driver: bridge

volumes:
  postgres:
  pgadmin:

Например, когда я запускаю docker-compose up -d из другого каталога, он воссоздает контейнеры

Recreating docker_postgres_1 ... done
Recreating docker_pgadmin_1  ... done

В чем проблема?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Docker Compose присоединяет префикс имени ко всему, что создает, но префикс по умолчанию основан только на базовом имени текущего каталога.Если у вас есть макет, такой как

projectA
+-- docker
|   \-- docker-compose.yml
projectB
\-- docker
    \-- docker-compose.yml

, тогда оба экземпляра docker-compose будут думать, что имя проекта просто docker (имя каталога, содержащего docker-compose.yml), и создавать имена контейнеров, например, например,, docker_postgres_1.

Обойти это можно, переименовав один из каталогов, используя docker-compose -p параметр , или установив COMPOSE_PROJECT_NAME переменную среды .Было бы весьма необычно видеть файл docker-compose.yml в каталоге верхнего уровня проекта, и это могло бы помочь устранить неоднозначность.

0 голосов
/ 25 февраля 2019

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

Попробуйте остановить контейнеры в предыдущей папке перед текущей.

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