目 录CONTENT

文章目录

定制JAVA8镜像(Oracle JDK)

简中仙
2020-09-09 / 0 评论 / 0 点赞 / 115 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-01-21,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

docker hub的官方仓库只有openjdk的官方镜像,没有oracle jdk的官方镜像,所以自己动手丰衣足食,自己制作一个oracle jdk的镜像,以后应用需要基于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;
0

评论区