Переменные окружения в docker -compose заменяются пустой строкой - PullRequest
3 голосов
/ 06 февраля 2020

Хотя, прочитав документацию Docker о переменных среды, у меня возникли некоторые проблемы с пониманием подстановки переменных.

Это мой текущий docker-compose.yml:

version: '3'
services:
  web:
    image: myimage:latest
    environment:
      FRONTEND_URL: http://mydomain
      CALLBACK_URL: ${FRONTEND_URL}/callback

Мое понимание до сих пор является то, что я могу использовать что-то вроде ${FRONTEND_URL}, так что CALLBACK_URL будет интерполирован до http://mydomain/callback, но после docker-compose up эта служба имеет следующие значения среды:

FRONTEND_URL: http://mydomain
CALLBACK_URL: /callback

Так выглядит если ${FRONTEND_URL} не подставляется. Что мне здесь не хватает?

1 Ответ

2 голосов
/ 07 февраля 2020

В одной папке можно использовать файл .env a docker-compose.yml.

.env

FRONTEND_URL=http://mydomain

docker - compose.yml

version: '3'
services:
  web:
    image: myimage:latest
    environment:
      FRONTEND_URL: ${FRONTEND_URL}
      CALLBACK_URL: ${FRONTEND_URL}/callback

enter image description here


Вместо использования файла .env вы можете использовать export. Выполните эту команду до docker-compose up:

export FRONTEND_URL=http://mydomain

Теперь вы можете использовать это docker-compose.yml:

version: '3'
services:
  web:
    image: myimage:latest
    environment:
      FRONTEND_URL: ${FRONTEND_URL}
      CALLBACK_URL: ${FRONTEND_URL}/callback

Если переменная окружения не установлена, Compose подставляет пустую строку В приведенном выше примере, если POSTGRES_VERSION не задано, значение для параметра изображения равно postgres:.

Можно установить значения по умолчанию для переменных среды, используя .env file, который Compose автоматически ищет. Значения, установленные в среде оболочки, переопределяют значения, заданные в файле .env.

source: https://docs.docker.com/compose/compose-file/#variable -подстановка

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