Docker Создать файл: ссылочные переменные среды из другого файла - PullRequest
0 голосов
/ 07 августа 2020

У нас есть что-то вроде этого в нашем docker -компонентном файле:

services:
   myapp:
      build: .
      image: my-app-image:uat
      ports:
      - "8080:8080"
      environment:
        - SERVER_SERVLET-PATH=/
        - SERVER_PORT=80
        - more variables.....

После среды следует множество переменных, которые нужны нашему приложению. Это затрудняет поиск и исследование файла из-за большого количества переменных. Также он выглядит грязным. Есть ли способ поместить все переменные среды в другой файл и просто сослаться на него?

Извините, я новичок в docker. Пытался найти это на сайте docker, но не нашел.

Помощь будет принята с благодарностью. Спасибо

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Вы можете использовать якоря YAML (я думаю, что это термин) для определения общих блоков для ссылки в одном файле.

# common pieces
x-common-params
environment:
  - SERVER_SERVLET-PATH=/
  - SERVER_PORT=80
  ... more ...


services:
myapp:
   build: .
   image: my-app-image:uat
   ports:
   - "8080:8080"
   <<: *common-params

Если вам нужно обмениваться файлами, это напрямую не поддерживается, но все же может быть выполнено несколькими разными способами.

В моем случае у меня есть один файл, содержащий все общие части. Затем в файл стека (в вашем случае - файл compose) я помещаю теги jinja2, которые нужно заполнить. Затем я использую утилиту командной строки j2, чтобы заполнить их во время сборки и развернуть сгенерированный файл.

В проект podman добавлен шаг препроцессора c, поэтому вы можете использовать "#include". Я знаю, что это не просто docker, но кажется довольно эффективным.

1 голос
/ 07 августа 2020

Ну, у одного решения есть файл .env в той же папке, где ваш docker compose: https://docs.docker.com/compose/env-file/

...