docker 容器添加中文字体支持:基于 openjdk:21-slim 制作带中文字体的镜像
🐳 Docker 容器添加中文字体支持:基于 openjdk:21-slim 制作带中文字体的镜像
在日常 Java 开发与部署中,经常会遇到生成 PDF、导出报表、图表渲染或前端预览等需要中文字体的场景。但使用官方精简版镜像(例如 openjdk:21-slim
)时,由于镜像极度瘦身,默认并不包含任何中文字体,导致容器里渲染中文时出现方块、问号或乱码。
下面分享一种简单的方法:在 openjdk:21-slim
镜像中安装字体支持,解决中文显示问题,并最终打包生成一个 自带中文字体支持的 JDK 镜像。
📦 已构建好的镜像
如果不想自己构建,也可以直接使用我在 Docker Hub 发布的镜像:
复制
docker pull wangshu10086/common-developer-images:openjdk-21-slim-font-support
注:可能需要科学上网(魔法 ✨)才能拉取。
步骤概览
1️⃣安装字体支持组件
复制
RUN apt-get update && apt-get install -y fontconfig
2️⃣ 准备中文字体
推荐将常用中文字体(比如微软雅黑、思源黑体、苹方等)拷贝到本地
font
目录。 例如可以直接从 Windows 的C:\Windows\Fonts
中复制需要的.ttf
字体。
3️⃣ 拷贝字体到镜像,并刷新字体缓存
复制
COPY font/* /usr/share/fonts
RUN chmod -R 755 /usr/share/fonts && fc-cache -f -v
🛠️ 完整 Dockerfile 示例
复制
FROM openjdk:21-slim
LABEL authors="wangshu10086"
RUN apt-get update && apt-get install -y fontconfig
RUN mkdir -p /usr/share/fonts
# 拷贝本地字体到容器
COPY font/* /usr/share/fonts
# 设置权限 & 刷新缓存
RUN chmod -R 755 /usr/share/fonts && fc-cache -f -v
延伸阅读
构建并发布镜像到 Docker Hub 的详细过程,可参考我这篇文章: 👉 如何基于 openjdk:21-slim 添加中文字体并发布到 Docker Hub
📝 总结
openjdk:21-slim
默认不带中文字体,导致 Docker 部署后中文乱码- 安装
fontconfig
+ 自定义字体,即可解决 - 推荐把常用字体打包到镜像里,发布后团队直接复用
作者:https://blog.xn--rpv331d.com/望舒
链接:https://blog.xn--rpv331d.com/望舒/blog/42
转载注意保留文章出处...
No data