Dokcer JDK 基础镜像

2022-12-20 1999点热度 0条评论

最近在项目上遇到了一个奇怪的问题,使用之前的jdk镜像时总数莫名其妙的出现问题,索性自己编译一个生产用的基础镜像。

创建镜像

创建的镜像本着最小化的原则,那当然是选择Alpine了,再者就是选择相应的JDK了,以前一直使用的是adoptopenjdk的包,但今天看到这个组织已经换到了新的地方。新的名字居然是eclipse-temurin

DEPRECATION NOTICE

This image is officially deprecated in favor of the eclipse-temurin image, and will receive no further updates after 2021-08-01 (Aug 01, 2021). Please adjust your usage accordingly.

本着简单高效的方式,这里就直接From了eclipse-temurin的jdk17版本,更多的版本可以在这里去寻找:eclipse-temurin local

错误

使用eclipse-temurin的JDK导致字体一直报错,索性用回adoptopenjdk/openjdk8-openj9

Dockerfile
FROM eclipse-temurin:17-jdk-alpine LABEL maintainer="jalena@bcsytv.com" RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tencent.com/g' /etc/apk/repositories && \ apk --no-cache --update add tzdata fontconfig ttf-dejavu && \ fc-cache --force && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo "Asia/Shanghai" > /etc/timezone COPY ./font /usr/share/fonts/win/

这里只是安装了部分可能在运维时需要的包,同时拷贝了Windows 10下的宋体、新宋体以及微软雅黑字体到容器中。若需要更多的字体可以在C:\Windows\Fonts目录下寻找并Copy进容器。

包含的字体:

  • /usr/local/share/fonts/win/simhei.ttf: SimHei,黑体:style=Regular,Normal...
  • /usr/local/share/fonts/win/simsun.ttc: SimSun,宋体:style=Regular,常规
  • /usr/local/share/fonts/win/msyh.ttc: Microsoft YaHei,微软雅黑:style=Regular,Norma...
  • /usr/local/share/fonts/win/msyhbd.ttc: Microsoft YaHei,微软雅黑:style=Bold...
  • /usr/local/share/fonts/win/msyhl.ttc: Microsoft YaHei UI:style=Light,Regular
  • /usr/local/share/fonts/win/msyhbd.ttc: Microsoft YaHei UI:style=Bold
  • /usr/local/share/fonts/win/msyhl.ttc: Microsoft YaHei,微软雅黑Light:style=Light,Regular
  • /usr/local/share/fonts/win/msyh.ttc: Microsoft YaHei UI:style=Regular,Normal

编译镜像

docker build --no-cache -t 17-jdk-alpine-cn .

测试

# 测试容器字体是否安装成功
docker run --rm -it 17-jdk-alpine-cn fc-list

# 查看容器内中文字体
docker run --rm -it 17-jdk-alpine-cn fc-list :lang=zh

推送hub

# 登录
docker login

# 为镜像打tag
docker tag 17-jdk-alpine-cn:latest jalena/17-jdk-alpine-cn

# 推送
docker push jalena/17-jdk-alpine-cn

使用镜像

镜像已经推送到中央仓库,可以直接拉取s使用。

docker pull jalena/17-jdk-alpine-cn:latest

这里给一个我在项目中的示例

Dockerfile
FROM jalena/17-jdk-alpine-cn:latest LABEL maintainer="Jalena jalena@bcsytv.com" RUN mkdir -p /blade/pda WORKDIR /blade/pda EXPOSE 8200 ADD ./target/blade-pda.jar ./app.jar ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] CMD ["--spring.profiles.active=test"]

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

文章评论