在使用 Java 部署服务器应用时,选择合适的 Docker 镜像非常重要。这取决于你的项目类型(如 Spring Boot、Java Web 应用等)、Java 版本(JDK 或 JRE)、以及是否需要额外的依赖(如 Maven、Gradle 构建工具)等。
🐳 常见 Java 项目部署使用的 Docker 镜像
✅ 官方推荐镜像
Docker Hub 上官方维护的 Java 镜像有:
eclipse-temurin(推荐)openjdk(已不推荐)adoptopenjdk(已合并进 Temurin)
现在推荐使用 Eclipse Temurin,它是由 Adoptium 提供的高质量 JDK 发行版。
🔧 常用镜像示例
示例1:Spring Boot 项目(使用 JDK 编译和运行)
FROM eclipse-temurin:17-jdk-jammy
WORKDIR /app
COPY your-app.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
示例2:只运行已编译好的 jar 包(使用 JRE 减小体积)
FROM eclipse-temurin:17-jre-jammy
WORKDIR /app
COPY your-app.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
示例3:多阶段构建(适合 Maven 项目)
# 第一阶段:构建 jar 文件
FROM eclipse-temurin:17-jdk-jammy AS builder
WORKDIR /build
COPY pom.xml .
RUN mvn dependency:resolve
COPY src ./src
RUN mvn package
# 第二阶段:最小化运行环境
FROM eclipse-temurin:17-jre-jammy
WORKDIR /app
COPY --from=builder /build/target/your-app.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
📦 其他可选镜像
如果你使用的是某些云厂商或定制镜像,也可以考虑以下选项:
| 镜像名称 | 描述 |
|---|---|
amazoncorretto |
AWS 维护的高性能 JDK,适合 AWS 环境 |
bellsoft/liberica-openjdk-alpine |
更小的 Alpine Linux + Liberica JDK/JRE |
gcr.io/distroless/java-debian11 |
Google 的 distroless 镜像,安全性高,适合生产环境 |
📌 小贴士
- 如果你不确定使用哪个版本,请优先选择
eclipse-temurin:17-jdk - 使用
jre而不是jdk可以减小镜像大小(适用于生产环境) - 使用多阶段构建可以显著减小最终镜像体积
- 注意项目的 Java 版本要求(比如 Spring Boot 3.x 要求 Java 17+)
🧪 示例命令
# 构建镜像
docker build -t my-java-app .
# 运行容器
docker run -d -p 8080:8080 my-java-app
如果你能提供更多信息(例如是哪种 Java 项目、是否需要构建、是否使用 Spring Boot、是否使用特定 JDK 版本),我可以为你提供更具体的镜像建议。
云计算HECS