我正在尝试在我的一个运行语句中使用--build-arg
,但它失败了。
Dockerfile
ARG OS_VERSION
...
RUN ["node", "./bin/installtoolchain.js", "${OS_VERSION}"]
我使用以下命令构建映像:
docker build --tag installer --build-arg OS_VERSION=9 .
脚本失败,因为它传递的是变量名称而不是值。
Error: Invalid toolchain configuration settings! Received: {
"firmwareVersion": "${OS_VERSION}"
}
...
为什么我的--build-arg
没有被利用?
Docker在设计上未能扩展您的参数。
粗略地说,Docker 将--build-args
视为临时环境变量。将环境变量与语法${VARIABLE}
一起使用需要 shell 扩展。
您已通过使用RUN
命令的 exec 形式显式绕过了外壳。
如果要使用--build-arg
,则必须使用RUN
命令的 shell 形式。
RUN node ./bin/installtoolchain.js ${OS_VERSION}
或者,准确地说,从 shell 调用命令。
RUN ["bash", "-c", "node ./bin/installtoolchain.js ${OS_VERSION}"]