dockerfile深入学习之FROM
FROM 主要作用于初始化新的构建阶段以及为后续指令执行提供基础镜像
语法形式:
FROM <image>[:<tag>] [AS <name>]
FROM <image>[@<digest>] [AS <name>]
注:
1、在所有指令中,ARG是唯一一个可以放在FROM指令之前的指令
2、在一个dockerfile文件中, FROM可以出现多次以创建多个图像或者通过FROM使用一个stage作为另一个stage的依赖镜像,每个FROM都会清除以前指令创建的任何状态
3、通过添加AS name可以为新的构建阶段命名,该名称可以在后续的FROM和COPY中通过 --from=<name|index>的方式引用
4、tag以及digest可任选一个,如果忽略掉,build默认采用最新的标记
FROM和ARG
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 VERSION=latest
FROM busybox:$VERSION
ARG VERSION //此处使用未赋值的VERSION,可以将VERSION变量值传递给后面的指令使用
RUN echo $VERSION > image_version //此处VERSION变量值为latest