最近在项目上遇到了一个奇怪的问题,使用之前的jdk镜像时总数莫名其妙的出现问题,索性自己编译一个生产用的基础镜像。
创建镜像
创建的镜像本着最小化的原则,那当然是选择Alpine了,再者就是选择相应的JDK了,以前一直使用的是adoptopenjdk的包,但今天看到这个组织已经换到了新的地方。新的名字居然是eclipse-temurin
。
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
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
这里给一个我在项目中的示例
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"]
文章评论