Docker容器构建最小JDK基础镜像及中文乱码和时区问题解决

3 篇文章 0 订阅
1 篇文章 0 订阅

一、准备

  1. 基础镜像使用的是alpine-glibc,因为java依赖glibc
  2. 下载jre,下载地址是https://www.java.com/en/download/manual.jsp,
  3. 上传jre-8u231-linux-x64.tar.gz至服务器

二、制作jre

1、解压jre

   tar -zxvf jre-8u231-linux-x64.tar.gz

2、进入目录

   cd jre1.8.0_231

3、删除文本文件

rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html

4、删除其他无用文件

rm -rf     lib/plugin.jar \
           lib/ext/jfxrt.jar \
           bin/javaws \
           lib/javaws.jar \
           lib/desktop \
           plugin \
           lib/deploy* \
           lib/*javafx* \
           lib/*jfx* \
           lib/amd64/libdecora_sse.so \
           lib/amd64/libprism_*.so \
           lib/amd64/libfxplugins.so \
           lib/amd64/libglass.so \
           lib/amd64/libgstreamer-lite.so \
           lib/amd64/libjavafx*.so \
           lib/amd64/libjfx*.so

 

5、重新打包所有文件

   

tar zcvf ../jre8.tar.gz *

三、创建镜像

1、创建Dockerfile文件

FROM jeanblanchard/alpine-glibc:latest

ADD jre8.tar.gz /usr/local/jdk/

ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8

ENV JAVA_HOME /usr/local/jdk

#ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

2、构建镜像

docker build -t jre/java8:1.2 .

3、运行

root@hhit-Virtual-Machine:/home/docker_jre1# docker run -it jre/java8:1.2
/ # java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

四、乱码问题

上面创建的镜像是有问题的,在运用到java项目运行时,日志等中文会乱码的,所以我想把法解决一下。

下载locale-archive文件,下载地址:http://download.csdn.net/download/zhuchuanwan/11970328

locale-archive放在和Dockerfile同一个目录下

修改Dockerfile文件,加入locale-archive,如下:

FROM jeanblanchard/alpine-glibc:latest

ADD locale-archive /usr/glibc-compat/lib/locale/

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

ADD jre8.tar.gz /usr/local/jdk/

ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8

ENV JAVA_HOME /usr/local/jdk

#ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

 

五、时区问题

在Dockerfile文件中加入

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ 
    && echo "Asia/Shanghai" > /etc/timezone

最终Dockerfile文件如下:

FROM jeanblanchard/alpine-glibc:latest

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

ADD jre8.tar.gz /usr/local/jdk/

ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8

ENV JAVA_HOME /usr/local/jdk

#ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

 

这是我构建的java8镜像,可以直接拿来用

registry.cn-hangzhou.aliyuncs.com/hhit/java8:min

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值