Linux入门教程:Dockerfile参考(4) – 使用环境变量,环境变量转义符也将类似变量的


由EVN指令声明的环境变量也可以用在Dockerfile的一些指令中作为变量使用。转义符也将类似变量的语法转义为语句。
在Dockerfile引用环境变量可以使用$variable_name或${variable_name}。它们是等同的,其中大括号的变量是用在没有空格的变量名中的,如${foo}_bar。
${variable_name}变量也支持一些标准的bash修饰符,如:

${variable:-word}表示如果variable设置了,那么结果就是设置的值。否则设置值为word ${variable:+word}表示如果variable设置了,那么结果是word值,否则为空值。

word可以是任意的字符,包括额外的环境变量。
转义符可以添加在变量前面:\$foo or \${foo},例如,会分别转换为$foor和${foo}。
示例:

FROM busybox ENV foo /bar WORKDIR ${foo}   # WORKDIR /bar ADD . $foo       # ADD . /bar COPY \$foo /quux # COPY $foo /quux

环境变量支持在下面的指令中使用:

ADD COPY ENV EXPOSE LABEL USER WORKDIR VOLUME STOPSIGNAL

也包括:

ONBUILD

注意:1.4之前的版本,ONBUILD指令不支持环境变量,即使是与上面列出的指令一起使用。

环境变量的替换在整个命令使用的值是一样的。例如:

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

def的值是hello,不是bye,不过,ghi的值为bye,因为设置abc为bye的命令与设置ghi命令不同。

相关内容