#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}