docker hub的官方仓库只有openjdk的官方镜像,没有oracle jdk的官方镜像,所以自己动手丰衣足食,自己制作一个oracle jdk的镜像,以后应用需要基于oracle jdk构建镜像的时候就可以直接用了。
下载 Oracle JDK
根据你的需求下载对应的JDK或者JRE
JRE: Java Runtime Environment
JDK:Java Development Kit
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
JRE根据不同操作系统(如:windows,linux等)和不同JRE提供商(IBM,ORACLE等)有很多版本,最常用的是Oracle公司收购SUN公司的JRE版本。如果你想查看更官方的解释,可以前往Oracle官网
这里我们使用JRE
需求:
1、支持系统中文显示
2、支持中文字体及并添加指定字体
3、修改默认时区为北京时间
目录
# ls
SourceHanSansCN-Medium.ttf
dockerfile
server-jre-8u341-linux-x64.tar.gz
simsun.ttc
Dockerfile文件编写(更改自官方仓库https://github.com/oracle/docker-images)
不过需要注意的是,alpine 的 c 库是 musl libc ,而不是正统的 glibc,另外对于一些依赖 glibc 的大型项目,像 openjdk 、tomcat、rabbitmq 等都不建议使用 alpine 基础镜像,因为 musl libc 可能会导致 JVM 一些奇怪的问题。这也是为什么 tomcat 官方没有给出基础镜像是 alpine 的 Dockerfile 的原因。
注:oraclelinux下载速度较慢,请耐心等待
FROM oraclelinux:8 as builder
LABEL maintainer="Aurelio Garcia-Ribeyro <aurelio.garciaribeyro@oracle.com>"
# Since the files is compressed as tar.gz first yum install tar. gzip is already in oraclelinux:8
RUN dnf install -y tar
# Default to UTF-8 file.encoding
ENV LANG en_US.UTF-8
# Environment variables for the builder image.
# Required to validate that you are using the correct file
ENV JAVA_HOME=/usr/java/jre-8
# 方法一:官方地址下载jre包
# http://www.oracle.com/technetwork/java/javase/downloads/index.html,jdk
# COPY server-jre-8u*-linux-x64.tar.gz /tmp/jdk.tgz
# SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# RUN set -eux; \
# mkdir -p "$JAVA_HOME"; \
# tar --extract --file /tmp/jdk.tgz --directory "$JAVA_HOME" --strip-components 1;
# 方法二:山东女子开源软件镜像站下载jre包
ENV pack_url="http://mirrors.sdwu.edu.cn/java" \
JAVA_HOME=/usr/java/jre-8
RUN curl -L $pack_url/server-jre-8u202-linux-x64.tar.gz -o /tmp/jre.tgz
RUN set -eux; \
mkdir -p "$JAVA_HOME"; \
tar --extract --file /tmp/jre.tgz --directory "$JAVA_HOME" --strip-components 1;
## Get a fresh version of SLIM for the final image
FROM oraclelinux:8
# Default to UTF-8 file.encoding
ENV LANG en_US.UTF-8
ENV JAVA_HOME=/usr/java/jre-8
ENV PATH $JAVA_HOME/bin:$PATH
# Copy the uncompressed Java Runtime from the builder image
COPY --from=builder $JAVA_HOME $JAVA_HOME
# 添加自定义中文字体
# RUN mkdir -p /usr/share/fonts/windows
# ADD *.ttf /usr/share/fonts/windows
# ADD *.ttc /usr/share/fonts/windows
##
RUN dnf -y update; \
dnf -y install fontconfig; \
rm -rf /var/cache/dnf; \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone; \
ln -sfT "$JAVA_HOME" /usr/java/default; \
ln -sfT "$JAVA_HOME" /usr/java/latest; \
for bin in "$JAVA_HOME/bin/"*; do \
base="$(basename "$bin")"; \
[ ! -e "/usr/bin/$base" ]; \
alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \
done; \
# -Xshare:dump will create a CDS archive to improve startup in subsequent runs
# the file will be stored as /usr/java/jre-8/jre/lib/amd64/server/classes.jsa
# See https://docs.oracle.com/javase/8/docs/technotes/guides/vm/class-data-sharing.html
java -Xshare:dump;
评论区