我试图在我的一条run语句中使用--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
没有被利用?
答案 0 :(得分:1)
Docker无法通过设计扩展您的论点。
松散地说,Docker将--build-args
视为临时环境变量。使用语法为${VARIABLE}
的环境变量需要外壳扩展。
您已经通过使用RUN
命令的exec形式显式地绕过了Shell。
如果您想使用--build-arg
,则必须使用RUN
命令的shell形式。
RUN node ./bin/installtoolchain.js ${OS_VERSION}
或者,确切地说,从外壳调用该命令。
RUN ["bash", "-c", "node ./bin/installtoolchain.js ${OS_VERSION}"]