我想编写两个环境变量:首先定义一个“ 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
命令中分割每个变量时,它是正确组成的。
这是预期的行为吗?
答案 0 :(得分:0)
docker reference document中对此行为进行了清楚的解释:
在整个指令中,环境变量替换将对每个变量使用相同的值。换句话说,在此示例中:
ENV abc=hello ENV abc=bye def=$abc ENV ghi=$abc
将导致
def
的值为hello
,而不是bye
。但是,ghi
的值为bye
,因为它不是将abc
设置为bye
的同一指令的一部分。