使用Alpine-linux作为基础镜像构建openjdk21

闲话少说我们开始,下面是Dockerfile文件

# 使用最新的 Alpine 镜像进行多阶段构建
FROM alpine:latest AS builder

# 设置环境变量
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH="$JAVA_HOME/bin:$PATH"

# 使用阿里云的镜像源加速,并安装必要的工具
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    apk add --no-cache tar bash

# 复制本地的 OpenJDK 安装包到镜像中
COPY OpenJDK21U-jre_x64_alpine-linux_hotspot_21.0.3_9.tar.gz /tmp/

# 解压并安装 OpenJDK
RUN mkdir -p /opt/java/openjdk && \
    tar -xzf /tmp/OpenJDK21U-jre_x64_alpine-linux_hotspot_21.0.3_9.tar.gz -C /opt/java/openjdk --strip-components=1

# 使用最小的基础镜像构建最终镜像
FROM alpine:latest

# 设置环境变量
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH="$JAVA_HOME/bin:$PATH"

# 使用阿里云的镜像源加速,并安装 libc6-compat
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    apk add --no-cache libc6-compat

# 从构建阶段复制 OpenJDK
COPY --from=builder /opt/java/openjdk /opt/java/openjdk

# 验证 Java 安装
RUN echo "Contents of /opt/java/openjdk/bin:" && ls -l /opt/java/openjdk/bin && \
    echo "Running java -version command:" && /opt/java/openjdk/bin/java -version && \
    echo "JAVA_HOME=$JAVA_HOME" && echo "PATH=$PATH"

# 设置工作目录
WORKDIR /app

# 定义容器启动时执行的默认命令
CMD ["sh"]

以上dockerfile我已经验证可以正常使用,想必大家都能看懂,我用了阿里云加速;如果你也要使用的最好把OpenJDK21U-jre_x64_alpine-linux_hotspot_21.0.3_9.tar.gz下载到本地和Dockerfile在同一个目录
打包,打包命令如下:

docker build -t openjdk21-alpine .
docker run -it --rm openjdk21-alpine sh
java -version

以上就是打包的全过程啦!各位小伙伴还有更好的方式可以在评论区找我交流
给各位小伙伴jdk下载地址
https://adoptium.net/zh-CN/temurin/releases/?version=21
我选择的是jre各位可以选择自己合适的包下载
在这里插入图片描述

最后看一下打出来的镜像大小
在这里插入图片描述

最后的图片中遮挡了镜像大小173MB,主要是jre解压后比较大。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐