Docker多阶段构建可以在构建镜像时,只使用工具镜像,但是不将工具镜像的内容打包到最终镜像中。这个可以减少镜像的最终大小。
使用编号引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FROM alpine/git WORKDIR /app RUN git clone https://github.com/spring-projects/spring-petclinic.git
FROM maven:3.5-jdk-8-alpine WORKDIR /app COPY --from=0 /app/spring-petclinic /app RUN mvn package
FROM openjdk:8-jre-alpine WORKDIR /app COPY --from=1 /app/target/spring-petclinic-1.5.1.jar /app CMD ["java -jar spring-petclinic-1.5.1.jar"]
|
使用别名引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FROM alpine/git AS GET_JOB WORKDIR /app RUN git clone https://github.com/spring-projects/spring-petclinic.git
FROM maven:3.5-jdk-8-alpine AS BUILD WORKDIR /app COPY --from=GET_JOB /app/spring-petclinic /app RUN mvn package
FROM openjdk:8-jre-alpine WORKDIR /app COPY --from=BUILD /app/target/spring-petclinic-1.5.1.jar /app CMD ["java -jar spring-petclinic-1.5.1.jar"]
|