0

我试图--build-arg在我的一个运行语句中使用 a ,但它失败了。

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被利用?

4

1 回答 1

1

Docker 未能通过设计扩展您的论点。

松散地说,Docker 将--build-args其视为临时环境变量。使用带有语法的环境变量${VARIABLE}需要 shell 扩展。

您已经通过使用命令的 exec 形式明确绕过了 shell RUN

如果你想使用--build-arg,那么你必须使用RUN命令的 shell 形式。

RUN node ./bin/installtoolchain.js ${OS_VERSION}

或者,准确地说,是从 shell 调用命令。

RUN ["bash", "-c", "node ./bin/installtoolchain.js ${OS_VERSION}"]
于 2019-10-08T18:51:14.830 回答