Насколько мне известно, только ENV
допускает, что, как указано в «Environment replacement»
переменных среды (объявленная с ENV
заявления) также могут быть использованы в определенных команд, как переменные, которые будут интерпретироваться Dockerfile.
Они должны быть переменными окружения, чтобы быть обновленными в каждом новом контейнере, созданном для каждой строки файла Docker, на docker build
.
Другими словами, эти переменные не интерпретируются непосредственно в файле Docker, а в контейнере, созданном для строки Dockerfile, поэтому используется переменная среды.
В этот день, я использую как ARG
(docker 1.10+, and docker build --build-arg var=value
) и ENV
.
Использование только ARG
означает, что ваша переменная видна во время сборки, не во время выполнения.
Мои Dockerfile обычно:
ARG var
ENV var=${var}
В вашем случае, ARG
достаточно: Я использую его, как правило, для установки http_proxy переменной, которая докер сборки необходим для доступа в Интернет во время сборки.
вы можете использовать ARG - см https://docs.docker.com/engine/reference/builder/#arg – lumos0815
@ lumos0815, я думаю, вы должны опубликовать его в качестве ответа (даже если это старый пост; для потомков), поскольку именно это просит ОП. – shriek