繁体   English   中英

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

[英]Docker build variables are always empty when building containers on Windows

我一生都无法填充 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

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

如果你使用

RUN echo "%arg1%"

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

在 Dockerfile 中使用powershell ,您需要使用与环境变量符号等效的powershell$env:variable

# RUN echo "${arg1}"
RUN echo $env:arg1

powershell使用${arg1}只会呈现一个空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM