需求
1.镜像要尽可能的小
2.字符集必须支持中文
3.时区是UTC+8
4.字体的支持
5.运行在容器的java进程pid!=1(如果java进程pid=1会导致jmap等工具使用不了。这里使用tini)
措施
- 基于以上要求我们构建出一下镜像
- 首先使用apline作为基础镜像足够小只有5M
- 由于alpine自带支持中文的字符集,这里我们只需要将LANG设置为C.UTF-8即可完美的支持中文。
- 国内软件源首选阿里云啦,顺道配置一下阿里云的镜像源,加速我们的镜像构建速度。
- 配置UTC+8时区需要安装tzdata,安装完成之后配置一下即可。
- 目前alpine携带JDK版本为1.80_171。
- 使用tini 包装java进程。
打包基础jdk镜像
FROM alpine:3.8
MAINTAINER cf 442498598@qq.com
ENV LANG=C.UTF-8 \
JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/jre \
PATH=$PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin \
TZ=Asia/Shanghai
RUN echo "" > /etc/apk/repositories \
&& echo "https://mirrors.aliyun.com/alpine/v3.8/main/" >> /etc/apk/repositories \
&& echo "https://mirrors.aliyun.com/alpine/v3.8/community/" >> /etc/apk/repositories \
&& apk update && apk add --no-cache openjdk8 ca-certificates tzdata ttf-dejavu tini \
&& rm -rf /var/cache/apk/* \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
这个相当于已经把jdk环境搭建完毕,下面只要把具体的应用封装在这镜像之上即可。
比如我现在需要跑一个
FROM alpine-jdk-1.8:v1
ADD eureka-server-1.0.0-SNAPSHOT.jar /usr/eureka-server-1.0.0-SNAPSHOT.jar
EXPOSE 1111
CMD ["java","jar","/usr/eureka-server-1.0.0-SNAPSHOT.jar"]
网友评论