背景
获取JDK17
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
解压JDK
tar -zxvf jdk-17_linux-x64_bin.tar.gz
制作JRE
由于jdk的体积比较大,可以使用jre来作为运行环境,jdk1.8及以前版本,自带jre,jdk9以后不再提供jre,需要自己制作。
jlink是通过按模块打包的,但是由于目前很多库还不是按模块打包的,所以我们无法知道项目里面都用了那些模块。只好将所有的模块进行打包。这样避免以后出现缺失模块导致应用报错的问题。
bin/jlink --module-path jmods --add-modules ALL-MODULE-PATH --compress=2 --strip-debug --output jre17
制作dockerfile
# 继承某个基础镜像
FROM ubuntu:latest
# 作者
MAINTAINER Arvin
#更新软件源
RUN apt-get update
#安装字体支持
RUN apt-get install fontconfig -y
#清理缓存
RUN apt-get clean
#在windows环境下构建,将/usr/share/zoneinfo/Asia/Shanghai拷贝到本地目录
COPY ./Shanghai /etc/localtime
#setup language 解决中文乱码
#设置中文支持
ENV LANG C.UTF-8
#解压jdk并删除lib目录下的源码
COPY ./jre17 /usr/local/jre17
#授执行权限
RUN chmod -R 750 /usr/local/jre17/bin
#setup java env
ENV JAVA_HOME=/usr/local/jre17
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CALSSPATH=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行构建
## 和dockerfile同目录执行
docker build -t jre17:unbuntu .
启动容器
docker run -di --name jre17 -d jre17:unbuntu
进入容器查看
## docker exec -it 容器ID /bin/bash
docker exec -it b728775d91f8 /bin/bash
下载制作后的镜像
docker save -o 镜像包 镜像名称