转载

服务通过Docker部署后,无法加载生成验证码,Docker容器添加字体

1.确认宿主机中是否有对应的字体

1.1.确认系统语言编码

$ echo $LANG
en_US.UTF-8
显示en_US.UTF-8说明支持中文

1.2. 查看已经安装的中文字体

$ fc-list :lang=zh
如果没有显示,说明这个宿主机中没有中文字体

2.安装字体软件

$ yum -y install fontconfig
注意这里安装的只是字体软件,不是字体 我们可以cd 到字体的目录下
$ cd /usr/share/fonts
$ ls
dejavu
此时,这个目录中是没有中文字体的

3.安装中文字体

我们可以在我们的Mac或者Windows找到字体并copy到/usr/share/fonts文件夹中 此处以Windows10为例: 先进入 C:\Windows\Fonts 2021071509574855 可以挑选几个中文字体或者全选所有字体,拷贝到linux中的/usr/share/fonts目录下 再次查看fc-list :lang=zh
$ fc-list :lang=zh 
/usr/share/fonts/chinese/MSYH.TTC: Microsoft YaHei:style=Normal
/usr/share/fonts/chinese/SIMSUN.TTC: 宋体,SimSun:style=常规,Regular
/usr/share/fonts/chinese/MSYHBD.TTC: Microsoft YaHei:style=?ντονα
/usr/share/fonts/chinese/DENGL.TTF: DengXian,DengXian Light:style=Light,Regular
/usr/share/fonts/chinese/DENG.TTF: DengXian:style=Regular
/usr/share/fonts/chinese/MSYH.TTC: Microsoft YaHei UI:style=Normal
/usr/share/fonts/chinese/MSYHBD.TTC: Microsoft YaHei UI:style=?ντονα
/usr/share/fonts/chinese/DENGB.TTF: DengXian:style=Bold
/usr/share/fonts/chinese/SIMSUN.TTC: 新宋体,NSimSun:style=常规,Regular
/usr/share/fonts/chinese/MSYHL.TTC: Microsoft YaHei UI,Microsoft YaHei UI Light:style=Light,Regular
/usr/share/fonts/chinese/SIMKAI.TTF: KaiTi:style=Regular,Normaali
/usr/share/fonts/chinese/SIMHEI.TTF: SimHei:style=Normal
/usr/share/fonts/chinese/SIMFANG.TTF: FangSong:style=Regular,Normaali
/usr/share/fonts/chinese/MSYHL.TTC: Microsoft YaHei,Microsoft YaHei Light:style=Light,Regular
此时宿主机中已经存在中文字体

4.Docker安装字体

我们可以通过目录挂载的方式,让Docker容器中的字体和宿主机的字体同步 在Dockerfile中加如下内容:
yum -y install fontconfig
RUN fc-cache -vf
在docker-compose.yml 中加如下内容:
volumes:
 - /usr/share/fonts:/usr/share/fonts # 创建容器数据卷

5.测试

16923497528754

成功生成验证码
正文到此结束
Loading...