Docker ARG 棘手的行为
Docker ARG tricky behavior
Docker 构建棘手的行为:
Docker文件
ARG php_version="7.2"
ARG flavor="stretch"
FROM php:${php_version}-fpm-${flavor}
#ARG php_version="7.2"
ENV php_v $php_version
CMD echo $php_v
如果你构建它并且 运行:
docker build -t args:1.0 .
docker run -it --name testargs args:1.0
输出为空字符串而不是预期的“7.2”
但是如果第三行 ARG 没有注释,我们得到“7.2”
为什么会这样?
Dockerfile 中的每个 FROM
代表一个新的构建阶段,并且在 FROM
之前声明的 ARG
不可用于从另一个 [=10] 开始的较新的构建阶段=].
引用doc的相关部分:
An ARG declared before a FROM is outside of a build stage, so it can’t
be used in any instruction after a FROM.
Docker 构建棘手的行为:
Docker文件
ARG php_version="7.2"
ARG flavor="stretch"
FROM php:${php_version}-fpm-${flavor}
#ARG php_version="7.2"
ENV php_v $php_version
CMD echo $php_v
如果你构建它并且 运行:
docker build -t args:1.0 .
docker run -it --name testargs args:1.0
输出为空字符串而不是预期的“7.2”
但是如果第三行 ARG 没有注释,我们得到“7.2”
为什么会这样?
Dockerfile 中的每个 FROM
代表一个新的构建阶段,并且在 FROM
之前声明的 ARG
不可用于从另一个 [=10] 开始的较新的构建阶段=].
引用doc的相关部分:
An ARG declared before a FROM is outside of a build stage, so it can’t be used in any instruction after a FROM.