了解ARG和FROM之间的交互方式

FROM指令支持任何在第一个FROM之前出现的ARG指令所声明的变量。

ARG  CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD  /code/run-app

FROM extras:${CODE_VERSION}
CMD  /code/run-extras

FROM之前声明的ARG指令处于构建阶段之外,因此,FROM之后的任何指令都不能使用它。如果需要使用在第一个FROM之前用ARG指令声明的变量的值,可以在构建阶段内部使用不带变量值的ARG(ARG variable的形式)指令

ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version
ARG VERSION=7
ARG FIRSTNAME="Larry"
ARG LASTNAME="Wall"
FROM centos:$VERSION
ARG VERSION # 将ARG声明的变量引用到构建阶段内部
ARG FIRSTNAME # 同上
ARG LASTNAME  # 同上
RUN echo $VERSION; echo $FIRSTNAME; echo $LASTNAME
CMD ["sh", "-c", "echo Process finished!"]

Last updated