Чтение спецификации c Docker env_file для контейнера - PullRequest
0 голосов
/ 13 января 2020

У меня есть проект с файлом .env в root проекта Maven, который содержит информацию, связанную с проектом. Я хочу иметь отдельный env файл с именем .creds.env в каталоге модулей в проекте, чтобы я мог добавить его в .gitignore. Файл .creds.env содержит имя пользователя и пароль в следующем формате:

USER_NAME=user
USER_PASSWORD=password

В docker-compose.yml у меня есть следующее, чтобы прочитать файл .creds.env для службы:

  myservice:
    env_file:
      - ./module/.creds.env
    container_name: myservice
    build:
      context: ./
      dockerfile: ./module/Dockerfile
      args:
        USER_NAME: ${USER_NAME}
        USER_PASSWORD: ${USER_PASSWORD}

Но имя пользователя и пароль считываются только из файла root .env, а не из модуля .creds.env

Структура проекта выглядит следующим образом:

|__ .env
|__ docker-compose.yml
|__ module
     |__ Dockerfile
     |__ .creds.env

Мне нужна помощь, чтобы выяснить, как прочитать файл .creds.env для контейнера myservice и продолжить чтение файла .env для всего остального.

1 Ответ

0 голосов
/ 13 января 2020

Вы должны удалить USER_NAME и USER_PASSWORD в файле root .env.

Похоже, вы можете предположить, что ваша среда всегда будет включать файл .creds.env.

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

  myservice:
    env_file:
      - ./module/.creds.env
    container_name: myservice
    build:
      context: ./
      dockerfile: ./module/Dockerfile
      args:
        USER_NAME: ${USER_NAME:-user}
        USER_PASSWORD: ${USER_PASSWORD:-mypass}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...