Использование ARG и ENV в Dockerfile - PullRequest
2 голосов
/ 28 февраля 2020

Я учусь использовать ARG и ENV в Dockerfiles. У меня есть этот простой Dockerfile:

ARG my_arg
ARG other_arg=other_default

FROM centos:7

ENV MY_ENV $my_arg
ENV OTHER_ENV $other_arg

CMD echo "$MY_ENV $OTHER_ENV"

Когда я его создаю: docker build --build-arg my_arg=my_value

И запускаю его: docker run <resulting-image>

Я не вижу ожидаемого вывода, что будет

my_value other_default

Вместо этого я вижу пустую строку. Что я делаю не так?

1 Ответ

3 голосов
/ 28 февраля 2020

В Dockerfile каждая строка FROM запускает новый образ и обычно сбрасывает среду сборки. Если вашему изображению нужно указать ARG s, они должны идти после строки FROM; если это многоэтапная сборка, их необходимо повторять на каждом изображении по мере необходимости. ARG перед первым FROM полезны только для разрешения переменных в строке FROM, но не могут использоваться иначе.

Это подробнее обсуждается в Понимание того, как взаимодействуют ARG и FROM в документации Dockerfile.

FROM centos:7

# _After_ the FROM line
ARG my_arg
ARG other_arg=other_default
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...