奋斗
努力

SpringBoot用哪个镜像?

云计算

在 Spring Boot 项目中,选择 Docker 镜像时需根据具体需求(如 JDK 版本、镜像大小、安全性等)。以下是常见推荐及适用场景:


1. 官方镜像(推荐基础选择)

  • 镜像名: eclipse-temurin(原 AdoptOpenJDK)
     FROM eclipse-temurin:17-jdk-jammy
  • 特点:
    • 由 Eclipse 基金会维护,社区信任度高。
    • 提供 LTS 版本(如 JDK 11/17/21)。
    • 支持多种基础系统(jammy 为 Ubuntu 22.04,alpine 更轻量但需注意兼容性)。

2. 轻量级镜像(适合生产环境)

  • 使用 JRE 而非 JDK(若只需运行编译后的应用):
     FROM eclipse-temurin:17-jre-jammy
  • Alpine 镜像(更小体积):
     FROM eclipse-temurin:17-jdk-alpine
    • ⚠️ 注意:Alpine 使用 musl libc,可能需测试兼容性(部分依赖如 glibc 的库需额外处理)。

3. Spring Boot 分层构建(优化构建速度与层缓存)

   FROM eclipse-temurin:17-jdk-jammy AS builder
   WORKDIR /app
   COPY .mvn .mvn
   COPY mvnw pom.xml ./
   RUN ./mvnw dependency:go-offline
   COPY src ./src
   RUN ./mvnw package -DskipTests

   FROM eclipse-temurin:17-jre-jammy
   COPY --from=builder /app/target/your-app.jar /app.jar
   ENTRYPOINT ["java", "-jar", "/app.jar"]
  • 优点: 利用多阶段构建减少最终镜像体积,依赖缓存提速构建。

4. 其他替代方案

  • Amazon Corretto(AWS 环境首选):
     FROM amazoncorretto:17
  • OpenJDK 官方镜像(更新较慢):
     FROM openjdk:17-jdk-slim

5. 避免的镜像

  • 过时的镜像(如 openjdk:8 已无官方支持)。
  • 非官方维护的镜像(可能存在安全风险)。

选择建议:

  • 开发/测试:直接使用 eclipse-temurin:17-jdk(功能完整)。
  • 生产环境:优先选择 -jre-alpine 版本,并通过分层构建优化。
  • 云环境:如 AWS 用 Amazon Corretto,Azure 用 Microsoft OpenJDK。

根据实际需求调整基础系统(如 -jammy-alpine)和 JDK 版本(推荐 LTS 版本)。

未经允许不得转载:云服务器 » SpringBoot用哪个镜像?