在Windows上构建容器时,Docker构建变量始终为空

问题描述 投票:0回答:1

我无法将dockerfile中的ARG填充到我的生活中。 Windows平台是否支持此功能?

我的Docker文件:

>type Dockerfile
FROM microsoft/nanoserver
ARG arg1
RUN echo "${arg1}"

我的图像构建命令:

docker image build -t argtest  . --build-arg arg1=ValueForArg1

结果:

Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM microsoft/nanoserver
 ---> a6688cd24441
Step 2/3 : ARG arg1
 ---> Using cache
 ---> 97770e203c82
Step 3/3 : RUN echo "${arg1}"
 ---> Running in ca6545d4bd0e
"${arg1}"
Removing intermediate container ca6545d4bd0e
 ---> c296d654afef
Successfully built c296d654afef
Successfully tagged argtest:latest
docker dockerfile
1个回答
2
投票

问题实际上是Windows如何在其脚本/批处理语言中表示变量。因此,echo命令(和任何其他命令)在Windows中不能像在大多数其他操作系统中那样工作。由于Dockerfile在主机操作系统(即Windows)中运行,而不是在容器中运行,因此它将使用Windows的语法来执行命令和变量。

如果你使用

RUN echo "%arg1%"

(或者你正在运行的任何命令),它应该适合你。

© www.soinside.com 2019 - 2024. All rights reserved.