Environment replacement
环境变量替换
环境变量(用ENV语句声明)也可以在某些指令中作为在Dockerfile能够被解释的变量使用。转义也可以通过将类似变量的语法实际包含在语句中来进行处理。
在Dockerfile中使用$variable_name或${variable_name}表示环境变量。它们被同等对待,并且大括号语法通常用于解决变量名没有空格的问题,例如${foo}_bar。
${variable_name}语法还支持一些标准的bash修饰符,如下所示:
${variable:-word}表示如果变量设置了值,那么结果将是该值。如果没有设置变量的值,则结果为word。
${variable:+word}表示如果变量设置了值,则word将为变量值,否则结果为空字符串。
在所有情况下,word可以是任何字符串,甚至 可以包括其他环境变量。
可以通过在变量前添加\来进行转义:例如,$foo或${foo}将分别转换为$foo和${foo}文字。
示例(解析的表示形式显示在#后面):
在Dockerfile中,以下指令列表支持环境变量:
ADD
COPY
ENV
EXPOSE
FROM
LABEL
STOPSIGNAL
USER
VOLUME
WORKDIR
ONBUILD (该指令可以与上面的指令组合起来使用)
对于整条指令当中的每一个变量,进行变量替换时,将使用相同的值。换句话说,在此示例中:
上述指令将使def的值为hello,而不是bye。但是,ghi的值将为bye,因为它与abc=bye不在同一条指令中。
Last updated