美文网首页docker
记录docker第一次选jdk镜像(2)

记录docker第一次选jdk镜像(2)

作者: 燃燃的爸爸 | 来源:发表于2019-10-14 14:28 被阅读0次

    需求

    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"]
    

    相关文章

      网友评论

        本文标题:记录docker第一次选jdk镜像(2)

        本文链接:https://www.haomeiwen.com/subject/wzylmctx.html