每次部署 Java 项目都要在服务器上装 JDK、配环境变量,烦得要死。
直接用多阶段构建,编译和运行分开,最终镜像只带个 JRE 就完事了。体积小、干净利落。
这里用的是 Maven + Zulu JDK 21 的组合,基本上拿来改改就能用。
Dockerfile
# 1
2
3
4
5
6
7
8
9
10
11
12
13
| FROM maven:3.9-eclipse-temurin-21-alpine as build
WORKDIR /app
COPY pom.xml .
COPY src ./src
# 构建应用
RUN mvn clean package -T 16 -DskipTests
FROM azul/zulu-openjdk:21-jre-latest as final
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENV RunEnv=PROD
ENTRYPOINT ["java","-jar","app.jar"]
|
- 第一阶段用
maven:3.9-eclipse-temurin-21-alpine 做编译,-T 16 是并行编译线程数,按自己机器来调 - 第二阶段只用 JRE 跑,不带编译工具,镜像体积小很多
RunEnv=PROD 是自定义的环境变量,代码里可以拿来判断运行环境