docker部署使用EasyExcel导出因未安装中文字体报错及处理方法

场景

本地使用EasyExcel模板方式导出表格无问题,当项目打包成docker镜像运行时报空指针异常,具体提示找不到字体,错误如下。

docker部署使用EasyExcel导出因未安装中文字体报错及处理方法_第1张图片

错误原因

原因是docker容器中没有安装中文字体,导出时获取不到字体报空指针异常。

处理方法

本处理方法时手动规避方法,可以根据以下步骤写成shell脚本,或者配置在DockerFile里面,是打包出来的镜像就是安装过中文字体的。本文仅展示手动规避方法,能更好的理解和扩展。

获取中文字体源文件

使用windows的简体中文字体即可,具体方法如下

1.win+r输入fonts

docker部署使用EasyExcel导出因未安装中文字体报错及处理方法_第2张图片

2. 找出图标为简体字的字体,上传到linux主机任意目录下

docker部署使用EasyExcel导出因未安装中文字体报错及处理方法_第3张图片

3.进入docker bash创建对应字体目录,并将字体从linux主机复制到docker容器字体目录中

docker exec -it {dockerName} bash

mkdir -p /usr/share/fonts/win

exit

docker cp MSYH.TTC {dockerName}:/usr/share/fonts/win

chmod 777 /usr/share/fonts/win/MSYH.TTC

4.进入docker bash安装字体,如果docker镜像系统版本和下图一致可以直接使用。如果不一致,请用对应的在线安装插件方法安装字体插件。

使用以下命令安装字体

apk update

apk add font-adobe-100dpi

fc-cache –f

5.重启docker容器使字体生效

docker restart {dockerName}

总结

docker部署java中有很多坑,类似于IO获取文件其实是在docker容器中的目录,要配置映射、定时任务读取的是docker容器的时间等等。由于docker镜像打出来是相对纯净的操作系统,当我们遇到本机正常docker失败的时候第一就应该想到时docker容器配置的问题,这让会减少定位问题的时间。

 

 

你可能感兴趣的:(docker,运维,linux,spring,boot)