java-11-alpine基础镜像构建

发布时间 2024-01-03 14:18:30作者: Carliels
  1. 准备动作
    1. Linux系统,安装Docker
    2. 新增工作目录,比如~/baseimg,进入工作目录
    3. 创建字体目录~/baseimg/fonts/truetype, 这里的truetype文件夹名字可自定义,对应上Dockerfile中的即可
    4. 上传字体文件【ttl,ttc等】至truetype
  2. 编辑基础镜像Dockerfile 
    1.  1 FROM alpine:3.17.3
       2 CMD ["/bin/sh"]
       3 MAINTAINER carliels@163.com
       4 # 创建工作目录
       5 WORKDIR /root
       6 # 修改软件包源地址(此处使用 清华大学的源地址)
       7 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
       8 # 更新软件包
       9 RUN apk update upgrade
      10 RUN apk add --no-cache ca-certificates tzdata tree curl tini
      11 RUN apk add gcompat
      12 RUN rm -rf *.apk && rm -rf /var/cache/apk/* && rm -rf locale.md
      13 # 增加字体支持
      14 RUN apk add --no-cache ttf-dejavu fontconfig
      15 # 增加TrueType字体
      16 COPY fonts/truetype /usr/share/fonts/truetype
      17 # tzdata 是可以配置时区,这里默认使用上海时区
      18 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
      19 RUN { echo '#!/bin/sh'; echo 'set -e'; echo; echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; } > /usr/local/bin/docker-java-home
      20 RUN chmod +x /usr/local/bin/docker-java-home
      21 # 支持使用中文
      22 ENV LANG=zh_CN.UTF-8
      23 ENV LANGUAGE=zh_CN.UTF-8
      24 
      25 # 以下为安装jdk 11 的命令 , 目前alpine:3.15 里面软件包最新版本 jdk版本 11.0.15
      26 ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk
      27 ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-11-openjdk/jre/bin:/usr/lib/java-11-openjdk/bin
      28 RUN apk add --no-cache openjdk11 && [ "$JAVA_HOME" = "$(docker-java-home)" ]
      29 
      30 CMD ["java","-version"]
  3. 命令行构建镜像
    1. 1 # 构建镜像
      2 docker build -t java-11-alpine:v1 .

       

  4. 推送镜像至仓库
    1. 1 # 可选动作,如果有镜像仓库
      2 docker login --name=<你的账号> -- password=<你的密码> <仓库地址> 
      3 docker tag java-11-alpine:v1 <仓库地址/目录>/java-11-alpine:v1
      4 docker push <仓库地址/目录>/java-11-alpine:v1
      5 docker logout

       

  5. 使用镜像
    1.  1 FROM <仓库地址/目录>/java-11-alpine:v1
       2 MAINTAINER <维护人>
       3 # 定义工作目录
       4 WORKDIR /home
       5 # 复制jar包到执行目录
       6 ADD target/*.jar app.jar
       7 # 暴露端口, 多个端口则写多行EXPOSE
       8 EXPOSE 8080
       9 
      10 ENTRYPOINT ["tini","java","-Dfile.encoding=utf-8","-jar"]
      11 CMD ["app.jar"]