Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


Dockerfile 多阶段构建 Docker 镜像

Docker 大约 750 字

示例

FROM maven:3.8.5-eclipse-temurin-11-alpine AS build
WORKDIR /app
COPY src ./src
COPY pom.xml .
COPY settings.xml .
RUN mvn -s ./settings.xml -f ./pom.xml clean package -Dmaven.test.skip=true

FROM openjdk:11-jre-slim
COPY --from=build /app/target/*.jar /app/app.jar
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

解读

第一阶段

  1. 拉取maven镜像作为build镜像
  2. 设置工作目录
  3. 拷贝当前src文件夹所有内容到容器的当前路径下的src文件夹下
  4. 拷贝当前文件夹下的pom.xml文件到容器的当前文件夹下
  5. 拷贝当前文件夹下的settings.xml文件到容器的当前文件夹下
  6. 执行maven打包命令

第二阶段

  1. 拉取openjdk镜像
  2. build镜像的/app/target/目录下拷贝jar包到当前容器的/app路径下,命名为app.jar
  3. 设置容器启动指令

COPY 指令

从指定阶段拷贝

从上一个阶段拷贝构建的文件到当前的新阶段。

构建阶段从0开始,可使用AS重命名每个阶段。

COPY --from=0

从外部镜像拷贝

COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf

官方文档

https://docs.docker.com/develop/develop-images/multistage-build

阅读 177 · 发布于 2022-11-27

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批