Docker多阶段构建可保存中间映像

时间:2020-10-25 13:15:11

标签: docker

我最近开始学习Docker,并一直在尝试学习如何使用多阶段构建。 这里的文档:https://docs.docker.com/develop/develop-images/multistage-build/

最终结果是与以前相同的微小生产图像,带有 大大降低了复杂性。您无需创建任何 中间图像,您无需提取任何伪像即可 您的本地系统。

还有一个例子,我认为不需要在这里复制,但是我也使用Gradle启动了一个我想容器化的小型Spring Boot项目。这是我的Dockerfile:

# using multi-stage to avoid manual ./gradlew build
FROM openjdk:11 as build

COPY gradle gradle
COPY build.gradle build.gradle
COPY gradlew gradlew
COPY gradlew.bat gradlew.bat
COPY settings.gradle settings.gradle
COPY src src

RUN ./gradlew build

# final image
FROM openjdk:11
WORKDIR /service
COPY --from=build /build/libs/*.jar /service/app.jar
ENTRYPOINT ["java","-jar","/service/app.jar"]

这是在构建之前的docker images命令输出:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
openjdk             11                  5c6e71a989bc        12 days ago         627MB

构建命令:docker build . -t sdemo:1.2.1
docker images完成后:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sdemo               1.2.1               24ea50770b2a        13 seconds ago      672MB
<none>              <none>              a1f8e74e1d81        20 seconds ago      960MB
openjdk             11                  5c6e71a989bc        12 days ago         627MB

您可以清楚地看到,我有2张而不是1张图片,而未命名的图片的大小可笑为960MB。是什么导致此问题?另外,如果相关,我在运行Ubuntu的虚拟盒子计算机上。

发布此问题时,整个项目位于https://github.com/vincent2704/demoSpringBootApp的1.2.1版下。

0 个答案:

没有答案