Docker解决容器中文字体乱码问题的终极方案分享

 更新时间:2025年09月16日 09:44:49   作者:寒冰碧海  
在腾讯云服务器使用Docker部署Java后端服务时,经常遇到生成图片、PDF或报表时中文显示为方框的问题,这是因为基础Docker镜像通常不包含中文字体,下面我们就来看看如何解决吧

解决痛点:在Docker容器中运行的Java应用生成图片、PDF时中文显示为方框?字体缺失导致报表乱码?本文一站式解决!

问题背景

在腾讯云服务器使用Docker部署Java后端服务时,经常遇到生成图片、PDF或报表时中文显示为方框的问题。这是因为基础Docker镜像通常不包含中文字体,导致Java应用无法正确渲染中文文本。

解决方案:四步添加中文字体

步骤1:获取字体文件

从Windows系统拷贝所需字体(推荐使用宋体simsun.ttc):

打开Windows字体目录:C:\Windows\Fonts

复制字体文件(我的操作是全放)

通过FTP/SFTP或SCP上传到Linux服务器

步骤2:宿主机准备字体目录

在服务器上创建字体存储目录并复制字体:

# 创建字体目录(推荐使用标准位置)
sudo mkdir -p /usr/local/share/fonts/chinese

# 复制字体到该目录
sudo cp /tmp/simsun.ttc /usr/local/share/fonts/chinese/

# 设置权限
sudo chmod 644 /usr/local/share/fonts/chinese/*

步骤3:复制字体到Docker容器

将字体复制到运行中的容器内:

# 语法:docker cp <宿主机路径> <容器名>:<容器内路径>
docker cp /usr/local/share/fonts/chinese/simsun.ttc your-container:/usr/share/fonts/

# 示例(容器名为app-server):
docker cp /usr/local/share/fonts/chinese/simsun.ttc app-server:/usr/share/fonts/

步骤4:容器内安装字体支持

进入容器安装字体工具并刷新缓存:

# 进入容器
docker exec -it your-container bash

查看镜像类型:

command -v apt-get || command -v yum || command -v apk

结果判断​:

  • /usr/bin/apt-get → Debian/Ubuntu
  • /usr/bin/yum 或 /usr/bin/dnf → CentOS/RHEL
  • /sbin/apk → Alpine

根据镜像类型选择安装命令:

# 🔹 Debian/Ubuntu 镜像
apt-get update && apt-get install -y fontconfig

# 🔸 CentOS/RHEL 镜像
yum install -y fontconfig

# 🔹 Alpine 镜像
apk update && apk add fontconfig

刷新字体缓存并验证:

# 刷新字体缓存
fc-cache -fv

# 验证字体安装
fc-list | grep -i "simsun"
# 预期输出:/usr/share/fonts/simsun.ttc: SimSun,宋体:style=Regular

进阶方案:构建时集成字体

创建自定义Dockerfile,永久解决字体问题:

FROM openjdk:11-jre-slim

# 1️⃣ 安装字体工具
RUN apt-get update && apt-get install -y fontconfig

# 2️⃣ 创建字体目录
RUN mkdir -p /usr/share/fonts/chinese

# 3️⃣ 添加字体文件(需提前放在Dockerfile同目录的fonts/下)
COPY fonts/simsun.ttc /usr/share/`在这里插入代码片`fonts/chinese/

# 4️⃣ 刷新字体缓存
RUN fc-cache -fv

# 后续构建步骤...

构建命令:

docker build -t java-with-chinese-fonts .

注意事项

字体授权:确保使用的字体有合法授权,商业字体需购买授权

容器重启:动态添加的字体在容器重启后会丢失,推荐使用Dockerfile方案

字体路径:Java应用默认搜索/usr/share/fonts,如需自定义路径需设置环境变量:

ENV JAVA_FONTS /usr/share/fonts/chinese

字体精简:Alpine镜像建议使用精简字体包:

apk add --no-cache font-noto-cjk

总结

通过以上步骤,我们成功解决了Docker容器中Java应用的中文字体缺失问题。关键点:

步骤关键操作命令示例
字体准备从Windows提取scp fonts user@server:/tmp
宿主机存储创建字体目录mkdir /usr/local/share/fonts/chinese
容器复制动态添加字体docker cp font.ttc container:/usr/share/fonts
容器配置安装fontconfigapt-get install fontconfig && fc-cache -fv

最佳实践:对于生产环境,强烈推荐使用Dockerfile构建包含字体的自定义镜像,一劳永逸解决字体问题!

到此这篇关于Docker解决容器中文字体乱码问题的终极方案分享的文章就介绍到这了,更多相关Docker容器中文字体乱码解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker修改容器内存大小的实现方式

    docker修改容器内存大小的实现方式

    我们使用docker时,经常会遇到docker容器使用内存大于docker宿主机内存,导致宿主机奔溃,从而影响其他宿主机上容器的运行,下面这篇文章主要给大家介绍了关于docker修改容器内存大小的相关资料,需要的朋友可以参考下
    2022-09-09
  • 用Docker搭建nextcloud个人网盘教程

    用Docker搭建nextcloud个人网盘教程

    大家好,本篇文章主要讲的是用Docker搭建nextcloud个人网盘教程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12
  • Windows安装docker-desktop的详细步骤

    Windows安装docker-desktop的详细步骤

    这篇文章主要介绍了Windows安装docker-desktop的详细步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • docker start启动容器后仍然exit状态的解决

    docker start启动容器后仍然exit状态的解决

    这篇文章主要介绍了docker start启动容器后仍然exit状态的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Docker如何使用Dockerfile构建镜像

    Docker如何使用Dockerfile构建镜像

    本篇文章主要介绍了Docker如何使用Dockerfile构建镜像,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • docker容器增加端口映射全过程(修改配置文件方式)

    docker容器增加端口映射全过程(修改配置文件方式)

    文章详细描述了如何通过修改Docker容器的配置文件来增加端口映射,以解决已经运行的容器需要增加端口映射的问题,以MySQL容器为例进行了具体操作步骤的说明
    2024-11-11
  • Docker-compose部署gitlab的方法步骤

    Docker-compose部署gitlab的方法步骤

    这篇文章主要介绍了Docker-compose部署gitlab的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 使用Docker部署todo任务管理器的实现

    使用Docker部署todo任务管理器的实现

    本文介绍使用Docker部署Todo任务管理器的全过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • 在Docker容器中使用Arthas的详细步骤

    在Docker容器中使用Arthas的详细步骤

    本文不是介绍arthas怎么用的。这里要说的是,如何在我们的docker容器中,使用arthas,对如何在Docker容器中使用Arthas相关知识感兴趣的朋友一起看看吧
    2021-12-12
  • Docker 部署开源远程桌面工具RustDesk的使用

    Docker 部署开源远程桌面工具RustDesk的使用

    本文介绍了RustDesk开源远程桌面工具的Docker部署使用方法,支持自建服务器,可实现安全私密的远程控制电脑,具有一定的参考价值,感兴趣的可以了解一下
    2024-10-10

最新评论