docker 多阶段构建(multi-stage build)

xiaoxiao2022-06-11  34

# docker 多阶段构建(multi-stage build) 

在Docker 17.05 多阶段构建推出之后,我们就可以很容易规避前面遇到的这些问题,并且只需要维护一个Dockerfile即可:

    # First stage: complete build environment     FROM maven:3.5.0-jdk-8-alpine AS builder     # add pom.xml and source code     ADD ./pom.xml pom.xml     ADD ./src src/     # package jar     RUN mvn clean package     # Second stage: minimal runtime environment     From openjdk:8-jre-alpine     # copy jar from the first stage     COPY --from=builder target/msb-1.0.jar msb.jar     # run jar     CMD ["java", "-jar", "msb.jar"]

对于上面的Dockerfile是不是很熟悉,它仅仅是将第二种方式中的两个Dockerfile合并到同一个Dockerfile中,同时在构建过程中自动帮您完成了build.sh的流程。

对于multi-stage build,其关键点主要有两点:

在前面阶段的FROM指令后面增加了一个AS参数,可为该构建阶段命名,便于后续构建阶段引用,格式如下:  

FROM image[:tag | @digest] AS stage

在后续阶段的COPY指令后面增加了--from参数,指明引用前面哪一个构建阶段的成果,格式如下:  

COPY --from=stage ...

同理,多阶段构建同样可以很方便地将多个彼此依赖的项目通过一个Dockerfile就可轻松构建出期望的容器镜像,而不用担心镜像太大、源码泄露等风险。

转载请注明原文地址: https://www.6miu.com/read-4930451.html

最新回复(0)