Dockerfile单行`ENV`组成变量不起作用

时间:2019-09-05 13:54:50

标签: docker dockerfile

我想编写两个环境变量:首先定义一个“ root”,并在同一行中使用它来创建一个组合的变量。例如,文件名和附加扩展名。

做这个容器,

FROM centos:7

ENV ROOT_VAR=stringy ROOT_VAR_TGZ=${ROOT_VAR}.tar.gz

RUN echo ${ROOT_VAR} $ ${ROOT_VAR_TGZ}

echo的输出是

stringy $ .tar.gz

但是当在单独的ENV命令中分割每个变量时,它是正确组成的。 这是预期的行为吗?

1 个答案:

答案 0 :(得分:0)

docker reference document中对此行为进行了清楚的解释:

  

在整个指令中,环境变量替换将对每个变量使用相同的值。换句话说,在此示例中:

ENV abc=hello
ENV abc=bye def=$abc
ENV ghi=$abc
     

将导致def的值为hello,而不是bye。但是,ghi的值为bye,因为它不是将abc设置为bye的同一指令的一部分。