无法从RUN命令访问Docker --build-arg(执行表单)

时间:2019-10-08 18:51:14

标签: docker build arguments execl

我试图在我的一条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没有被利用?

1 个答案:

答案 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}"]