Docker-compose подстановка внутренней переменной файла .env - PullRequest
0 голосов
/ 04 ноября 2019

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

Я просматривал документацию docker-compose и не нашел ничего, упоминающего это(или любые примеры в Интернете), но кажется, что это было бы удивительно, если бы это было невозможно.

Я говорю о том, чтобы сделать что-то подобное в моем файле .env:

// .env
SOME_LOCATION=/path/to/some/location

CONFIG_FILE=${SOME_LOCATION}/config
CONSTANT_FILE=${SOME_LOCATION}/constants

(В этом примере CONFIG_FILE равен строке $${SOME_LOCATION}/config, и то же самое происходит с CONSTANT_FILE)

Я понимаю, что это возможно внутри файла compose.yml с таким синтаксисом, но может ли это бытьсделано только внутри .env файла?

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

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете изменить или добавить переменную .env с помощью команды export в сценариях оболочки.

Путь к файлу вот так;

-project
  -> docker-compose.yml
  -> .env
  -> start.sh

docker-compose.yml

services:
  jira:
    image: atlassian/jira-software
    volumes:
      - ${CONFIG_FILE}:/var/atlassian/application-data/jira
    ports:
      - 8080:8080 
volumes:
  jira_vol:
    external: false

start.sh

export "CONFIG_FILE=${SOME_LOCATION}/jira_vol"
docker-compose up -d

.env

SOME_LOCATION=./volumes

Наконец, запустите эту команду;

sh start.sh

файл start.sh будетдобавьте переменную CONFIG_FILE и запустите docker compose. И вы можете использовать CONFIG_FILE и SOME_LOCATION в docker-compose.yml .

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