0%

Docker多阶构建

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"]