将参数传递给dockerfile的操作不正常
我在向dockerfile传递参数值时遇到一些问题将参数传递给dockerfile的操作不正常,docker,dockerfile,windows-server-container,Docker,Dockerfile,Windows Server Container,我在向dockerfile传递参数值时遇到一些问题 FROM microsoft/iis ARG a_version RUN echo $a_version 在Windows Server 2016中运行docker 我的docker版本信息是 PS C:\Users\Administrator\Desktop> docker version Client: Docker Engine - Enterprise Version: 19.03.4 API vers
FROM microsoft/iis
ARG a_version
RUN echo $a_version
在Windows Server 2016中运行docker
我的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以管理员身份打开
我的推荐信是
但这对我不起作用
ARG PORT_SITE
ENV PORT_SITE ${PORT_SITE}
这是我的dockerfile
FROM microsoft/iis
ARG 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
为什么会这样?你怎么能修好它
在Windows命令提示符中,语法为echo%a\u version%
,作为您的
基本图像基于窗口
所以你可以把这个改成
FROM microsoft/iis
ARG a_version
RUN echo %a_version%
我不得不做一些类似的事情,这是一段对我有用的代码
ARG PORT_SITE
ENV PORT_SITE ${PORT_SITE}
然后我在入口点引用它如下
$env:PORT_SITE
我就是这样做的,但我想您可以ommit env变量,并使用
${PORT_SITE}
你能试试运行echo%a\u version%@adii哇!它起作用了!你真是个天才。为什么%a_版本%有效?这是什么意思?这是因为基本图像是一个窗口,需要使用命令提示符语法。