Импорт файла компоновки Docker в другой файл компоновки - PullRequest
4 голосов
/ 12 апреля 2019

Можно ли "импортировать" или связать файл docker-compose с другим файлом docker-compose?

Предположим, у меня есть два файла:

# docker-compose-1.yml
services:
    A:
        # config
    B:
        # config
# docker-compose-2.yml
services:
    C:
        # config
    import: docker-compose-1.yml

Путем запускаdocker-compose -f docker-compose-2.yml up, я хотел бы запустить контейнеры A, B (указанные в импортированном файле) и C. Возможно ли это без необходимости связывать оба файла с параметром -f?

1 Ответ

3 голосов
/ 12 апреля 2019

Расширяя

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

Здесь я определил common-services.yaml:

version: '2'
    services:
    nginx_a:
        image: nginx:latest
        container_name: nginx
        ports:
         - 81:80
         - 1443:443

А затем я создал Docker-compose.yml и включает в себя файл common-services.yml и собственный сервис.

services:
   nginx:
     extends:
         file: common-services.yml
         service: nginx_a

   nginx_b:
      image: nginx:latest
      container_name: nginx_b
      volumes:
      ports:
       - 82:80
       - 2443:443

По методике .env

А если вы хотите избежатьИспользование нескольких файлов в цепочке также есть метод с файлами .env.Я перепишу предыдущий пример с техникой .env.

COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=common-services.yml:docker-compose.yml

Давайте добавим еще один сервис в качестве примера в common-services.yml

 version: '2'
 services:
   ngin_a:
     image: nginx:latest
     container_name: nginx_a
     ports:
       - 81:80
       - 1443:443

   redis_c:
     image: redis:latest
     container_name: redis_c
     ports:
       - 6381:6380

И, наконец, загрузим все из нихв файле docker-compose без упоминания событий для этих сервисов.

version: '2'
 services:
   nginx_b:
     image: nginx:latest
     container_name: nginx_b
     ports:
       - 82:80
       - 2443:443
     env_file:
       - .env

В итоге у вас будет три запущенных сервиса.

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