docker构建java运行环境

Dockerfile 的核心目的是基于Alpine 3.10轻量镜像构建一个包含 JDK 8u411 的 Java 运行环境,同时解决 Alpine 原生 musl-libc 与 Oracle JDK 依赖 glibc 的兼容性问题,还配置了阿里云源、上海时区和中文 UTF-8 编码,最终默认执行java -version验证环境。

Dockerfile

FROM alpine:3.10
MAINTAINER yunhaoz659@gmail.com
WORKDIR /java
ADD jdk-8u411-linux-x64.tar.gz /java
ADD sgerrand.rsa.pub /etc/apk/keys
COPY glibc* /java/
RUN echo "http://mirrors.aliyun.com/alpine/v3.10/main/" > /etc/apk/repositories \
  && echo "http://mirrors.aliyun.com/alpine/v3.10/community/" >> /etc/apk/repositories \
  && apk update \
  && apk --no-cache add ca-certificates  \
  && apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \
  && rm -rf /var/cache/apk/* glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \
  && ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && echo 'Asia/Shanghai' >/etc/timezone \
  && /usr/glibc-compat/bin/localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
ENV JAVA_HOME /java/jdk1.8.0_411
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8
CMD ["java", "-version"]

附件下载:

alpinejdk.zip

Categories: docker与kubernetes