无法从 RUN 命令(exec 表单)访问 Docker语言 - -build-arg



我正在尝试在我的一个运行语句中使用--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}"]

最新更新