一.目的:

制作基于openjdk21的基础镜像,方便后续使用
内容:
1.使用的是Debian 11 slim 作为基础镜像(在此感谢no name大佬提醒我alpine做为基础镜像不稳定的问题)
2.使用adoptium的OpenJDK21U-jre_x64_linux_hotspot_21.0.4_7.tar.gz 做为环境

打包后的镜像大小在319MB

二.dockerfile 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 使用 Debian 11 slim 作为基础镜像
FROM debian:11-slim

# 设置环境变量
ENV jdk=OpenJDK21U-jre_x64_linux_hotspot_21.0.4_7.tar.gz
MAINTAINER bright "1024347104@qq.com"

# 配置镜像源
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list

# 更新软件包索引并安装必要的工具和依赖
RUN apt-get update && apt-get install -y \
locales \
tzdata \
fontconfig \
libfontconfig1 \
&& rm -rf /var/lib/apt/lists/*

# 生成并设置中文 locale
RUN echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen \
&& echo "LANG=zh_CN.UTF-8" > /etc/default/locale

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone

# 添加 JDK 文件
# JDK 文件可以从 https://adoptium.net/zh-CN/temurin/releases/ 下载
COPY $jdk /usr/local/
RUN tar -xzf /usr/local/$jdk -C /usr/local/ && rm /usr/local/$jdk

# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk-21.0.4+7-jre
ENV PATH=$JAVA_HOME/bin:$PATH

# 设置 Java 字符编码环境变量
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"

三.调试

1
2
3
4
5
6
#生成镜像
docker build -t 1024347104/jdk21 .
#测试镜像
docker run --rm -it --name test 1024347104/jdk21
#进入临时镜像测试是否成功
java -version

四.效果图

1.运行效果图
image.png

2.查看dokcer镜像

1
docker inspect 1024347104/jdk21:latest 

image.png