FROM mirrors.xxx.com/ci/alpine_linux:latest
# Install jdk21
WORKDIR /tmp/jdk21
ADD jdk_21.tar.gz /usr/local/java
RUN ln -s /usr/local/java/jdk_21 /usr/local/java/jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV PATH ${JAVA_HOME}/bin:$PATH
# install maven
RUN wget -q <https://mirrors.xxx.com/apache-maven-3-bin.zip> && \\
unzip -qd /opt/ apache-maven-3-bin.zip
WORKDIR /tmp
docker build -t xxxx -f ./Dockerfile .
| 方面 | 变体 A (Amazon Corretto 基础) | 变体 B (Eclipse Temurin 基础) | 主要区别 |
|---|---|---|---|
| 构建阶段镜像 | maven:3.9.6-amazoncorretto-21 AS builder |
maven:3.9.6-eclipse-temurin-21 AS builder |
JDK 提供者不同:Amazon Corretto(AWS 官方 OpenJDK 发行版) vs Eclipse Temurin(Adoptium 的 OpenJDK 发行版)。Maven 版本均为 3.9.6,JDK 均为 Java 21。 |
| 运行阶段镜像 | amazoncorretto:21-alpine |
eclipse-temurin:21-jre-alpine |
运行时类型不同:完整 JDK (Corretto) vs JRE(仅运行时,Temurin)。两者均基于 Alpine Linux(轻量级发行版)。 |
| JDK 版本 | Java 21 (Amazon Corretto) | Java 21 (Eclipse Temurin) | 版本相同,但 Corretto 优化了 AWS 环境,Temurin 更通用/社区导向。 |
| Linux 基础 | Alpine Linux (在两个阶段均使用) | Alpine Linux (在两个阶段均使用) | 相同:Alpine 提供更小的镜像大小(~5MB 基础),适合生产部署。 |
| 镜像大小估算 | 构建阶段:~800MB | ||
| 运行阶段:~200MB | 构建阶段:~750MB | ||
| 运行阶段:~150MB | Temurin JRE 更轻量(无开发工具),整体镜像更小。 | ||
| 适用场景 | AWS 生态(如 ECS/EKS),需要完整 JDK 工具链 | 通用部署(如 Kubernetes),追求最小化运行时镜像 | Corretto 适合 AWS 优化;Temurin 更灵活,JRE 减少安全表面。 |
| 潜在优势 | 内置 AWS 性能调优,易集成 AWS 服务 | 开源社区支持强,JRE 减少漏洞暴露,镜像更小 | 取决于环境:AWS 用户选 A,非 AWS 选 B 以节省资源。 |
| 方面 | Amazon Linux 2023 (AL2023) | Alpine Linux (Eclipse Temurin Alpine 变体) | 主要影响 |
|---|---|---|---|
| 基础设计 | 基于 Fedora/CentOS Stream 9,RPM-based 通用服务器发行版。 | 独立发行版,轻量级容器优先;使用 BusyBox(多合一工具集)。 | Alpine 启动更快、资源占用低;AL2023 更像标准 Linux,易移植传统应用。 |
| 包管理 | dnf/yum(兼容 RPM,包丰富,易管理)。 | apk(简单、快速,但包生态小)。 | Alpine 安装依赖少,但可能需手动编译;AL2023 更易获取 AWS 工具。 |
| C 库 (libc) | glibc(标准、兼容性强,支持更多软件)。 | musl(轻量、安全,但二进制兼容性差)。 | Alpine 可能导致某些 Java native 库(如 JNI)兼容问题;AL2023 无此顾虑。 |
| 镜像/系统大小 | 较大(基础 ~500MB+,Corretto ~800MB)。 | 极小(基础 ~5MB,Temurin JRE ~150MB)。 | Alpine 适合 Docker/K8s 生产部署,减少传输/存储成本;AL2023 适合开发/测试。 |
| 内核与服务 | systemd,全内核支持(包括实时补丁)。 | 无 systemd(使用 OpenRC),内核精简。 | Alpine 容器友好,但调试复杂;AL2023 更稳定,集成 AWS 云-init。 |
| 安全与支持 | 默认 SELinux/AppArmor,5 年 LTS(季度安全更新)。 | 强加密默认,滚动发布;社区支持,无 LTS。 | AL2023 更适合企业生产;Alpine 灵活但需手动维护。 |
| 适用场景 | AWS EC2/EKS 服务器、CI/CD 构建;Corretto 镜像常用。 | 容器化(如 Docker runtime)、边缘计算;Eclipse Temurin 用其减小 Java 镜像。 | 在您的 Dockerfile 中,用 Alpine 运行阶段“瘦身”镜像,但构建阶段可混用 AL2023 以兼容 AWS。 |
| 潜在缺点 | 体积大、AWS 绑定强。 | 包少、兼容性坑(如 glibc 依赖)。 | 混合使用需测试(如 Java 应用在 musl 上运行)。 |