将参数传递给 dockerfile 效果不佳
Passing argument to dockerfile not working well
我在将参数值传递给 docker 文件时遇到了一些问题。
运行 docker 在 Windows Server 2016
我的 docker 版本信息是
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
。
我的参考是。
但它对我不起作用。
所以这是我的docker文件。
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
为什么会这样?如何解决?
In Windows Command-Prompt the syntax is echo %a_version%
as your
base image is based on window.
how-can-i-display-the-contents-of-an-environment-variable-from-the-command-promp
所以你可以把它改成
FROM microsoft/iis
ARG a_version
RUN echo %a_version%
我不得不做一些类似的事情,这是一段对我有用的代码。
ARG PORT_SITE
ENV PORT_SITE ${PORT_SITE}
然后我在入口点引用它如下
$env:PORT_SITE
我就是这样做的,但我想你可以忽略环境变量,只使用
引用 arg 值
${PORT_SITE}
我在将参数值传递给 docker 文件时遇到了一些问题。
运行 docker 在 Windows Server 2016
我的 docker 版本信息是
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
。
我的参考是
但它对我不起作用。
所以这是我的docker文件。
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
为什么会这样?如何解决?
In Windows Command-Prompt the syntax is echo
%a_version%
as your base image is based on window.
how-can-i-display-the-contents-of-an-environment-variable-from-the-command-promp
所以你可以把它改成
FROM microsoft/iis
ARG a_version
RUN echo %a_version%
我不得不做一些类似的事情,这是一段对我有用的代码。
ARG PORT_SITE
ENV PORT_SITE ${PORT_SITE}
然后我在入口点引用它如下
$env:PORT_SITE
我就是这样做的,但我想你可以忽略环境变量,只使用
引用 arg 值${PORT_SITE}