Определите переменную из переменной в файле среды .env с помощью файла Dockerfile

#docker #dockerfile

Вопрос:

Я могу использовать --env-file /path/to/.env для определения переменных. Есть ли способ определить переменную из ранее определенной переменной в том же файле? Пример:

 SOME_USER=good_user
ROOT_USER=$SOME_USER
 

Комментарии:

1. Да, ваш пример будет работать точно так, как написано. ${SOME_USER} тоже работает.

2. результат, который я получаю, это $SOME_USER и ${SOME_USER}

3. ОК. Это работает для .env файла, используемого с docker-compose. Даже при передаче указанного файла в контейнер, используемый env_file в вашем docker-compose.yml файле. Я предполагал, что здесь все будет работать так же. По-видимому, нет.

Ответ №1:

Насколько я знаю, это всего лишь простой список значений, ничего особенного, такого как шаблоны или расширение, и он даже разбит на кавычки, поэтому, например VAR="test" , на самом деле будет значением "test" вместо test .

В документации также ничего не упоминается или, по крайней мере, явно.

… простые (не связанные с массивом) переменные среды …

… Этот файл должен использовать синтаксис <переменная>=значение (которое задает переменной заданное значение) или <переменная><переменная> (которая принимает значение из локальной среды) и # для комментариев. …

 $ cat file.env 
VAR=one
VAR2=$VAR
VAR3=${VAR}

$ docker run -it --env-file file.env busybox env | grep VAR
VAR=one
VAR2=$VAR
VAR3=${VAR}