docker-compose构建args没有传递给Dockerfile
docker-compose.yml:
version: "3"services:
ei:
build:
context: .
dockerfile: Dockerfile
args:
NODE_VERSION: 8
HELLO: 5
Dockerfile:
ARG NODE_VERSIONARG HELLO
FROM node:$NODE_VERSION
RUN echo "-> $HELLO"
RUN echo "-> $NODE_VERSION"
结果是:
km@Karls-MBP ~/dev/ve (km/ref) $ docker-compose -f docker-compose.yml build --no-cachevertica uses an image, skipping
Building ei
Step 1/14 : ARG NODE_VERSION
Step 2/14 : ARG HELLO
Step 3/14 : FROM node:$NODE_VERSION
---> e63de54eee16
Step 4/14 : RUN echo "-> $HELLO"
---> Running in e93d89e15913
->
Removing intermediate container e93d89e15913
---> c305b277291c
Step 5/14 : RUN echo "-> $NODE_VERSION"
---> Running in 39e8e656c0bd
-> 8
我ing不休,为什么这不起作用。如果更改节点版本号,则该数字也会更改。
回答:
在compose文件上定义的参数在Dockerfile上可用,但仅在之前和之上可用FROM
。在FROM
参数不可用之后:
ARG
在a之前的声明FROM
位于构建阶段之外,因此不能在以后的任何指令中使用它FROM
。- 来自dockerdocs
。NODE_VERSION
之后的说法无效FROM
。该参数仅用于FROM
(FROM
node:8)。之后FROM
是具有相同名称的图像的环境变量。因此,您回显图像的环境变量,而不是撰写文件的参数。
但是,您可以在以下位置使用参数的默认值FROM
:
要
ARG
在第一次FROM
使用声明之前使用默认值,请在ARG
构建阶段使用不带值的指令。- 来自dockerdocs
ARG NODE_VERSIONFROM node:$NODE_VERSION
ARG HELLO
RUN echo "-> $HELLO"
RUN echo "-> $NODE_VERSION"
要使用并显示参数中定义的节点版本,您需要重命名此参数。因此,您可以使用以下命令显示图像的所有参数和环境变量:
ARG CUSTOM_NODE_VERSIONFROM node:$CUSTOM_NODE_VERSION
ARG CUSTOM_NODE_VERSION
ARG HELLO
RUN echo "-> $HELLO" #output: 5
RUN echo "-> $NODE_VERSION" #output: 8.9.4
RUN echo "-> $CUSTOM_NODE_VERSION" #output: 8
version: "3"services:
ei:
build:
context: .
dockerfile: Dockerfile
args:
CUSTOM_NODE_VERSION: 8
HELLO: 5
以上是 docker-compose构建args没有传递给Dockerfile 的全部内容, 来源链接: utcz.com/qa/431557.html