Передача аргумента в dockerfile не работает
У меня возникли проблемы с передачей значения аргумента в файл dockerfile.
Запуск докера в Windows Server 2016
Информация о моей версии докера
PS C:\Users\Administrator\Desktop> docker version
Client: Docker Engine - Enterprise
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
Git commit: 9e27c76fe0
Built: 10/17/2019 23:42:50
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Enterprise
Engine:
Version: 19.03.4
API version: 1.40 (minimum version 1.24)
Go version: go1.12.10
Git commit: 9e27c76fe0
Built: 10/17/2019 23:41:23
OS/Arch: windows/amd64
Experimental: false
и powershell открылся как administrator
.
Моя ссылка это.
Но у меня это не сработало.
Итак, это мой файл докеров.
FROM microsoft/iis
ARG a_version
RUN echo $a_version
Также я пробовал много разных типов эхо-значений, таких как
RUN echo "$a_version"
RUN echo ${a_version}
RUN echo "${a_version}"
И это моя команда на выполнение.
docker build . --build-arg a_version=1234
Моим ожидаемым результатом была печать 1234
Но фактический результат был
PS C:\Users\Administrator\Desktop> docker build . --build-arg a_version=1234
Sending build context to Docker daemon 14.04MB
Step 1/3 : FROM microsoft/iis
---> 595015675977
Step 2/3 : ARG a_version
---> Running in 91698d9e71da
Removing intermediate container 91698d9e71da
---> 2bad94a2ce74
Step 3/3 : RUN echo $a_version
---> Running in 3fe25ecb813c
$a_version
Почему это происходит? Как это исправить?
2 ответа
В командной строке Windows используется синтаксис echo
%a_version%
поскольку ваше базовое изображение основано на window.
как-можно-я-отображать-содержимое-переменной-среды-из-командной-подсказки
Так что вы можете изменить это на
FROM microsoft/iis
ARG a_version
RUN echo %a_version%
Мне пришлось сделать что-то подобное, и этот фрагмент кода у меня сработал.
ARG PORT_SITE
ENV PORT_SITE ${PORT_SITE}
а затем я ссылаюсь на это в точке входа следующим образом
$env:PORT_SITE
Я так и сделал, но я полагаю, что вы можете опустить переменную env и просто сослаться на значение arg, используя
${PORT_SITE}