openjdk21 构建基础镜像
使用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解压后比较大。