前言
最近开发那边接到一个需求:在服务端生成图片,这样一个需求,但是由于我们容器里面没有中文字体,所以中文显示不出来,显示乱码的情况。然后开发就给我提了一个需求,想让他的这个项目在部署所有环境的时候,docker容器里自动安装一个中文字体,字体是微软雅黑的。
处理步骤:
1.准备中文字体-微软雅黑
首先到容器里查询一下,确实没有字体。那我就得准备字体然后拷贝到容器里。
1、windows下有很多字体可以拿来使用,在C:\Windows\Fonts 文件夹下找到需要安装的字体
mac的字体在/System/Library/Fonts文件夹下,里面有很多字体可以使用。下面是在mac的目录下的所有字体,可以根据自己的电脑操作系统来进行查找。
2、上传到linux操作系统中
2、给系统安装字体管理
由于镜像是基于alpine系统的,所以需要基于alpine来安装字体管理。先临时在pod内操作一遍,测试没问题了在写在Dockerfile里。以下操作都是在对应服务的pod内来执行的。
apk update
apk add font-adobe-100dpi
mkdir /usr/share/fonts/win
3、拷贝中文字体文件到对应服务的pod中
kubectl cp yahei.ttf pod_name:/usr/share/fonts/win/yahei.ttc
4、刷新字体管理器
进入到pod内,对文件赋权限
chmod 777 /usr/share/fonts/win/simsun.ttc
5、刷新,查看
fc-cache -f
fc-list
6、测试字体是否正常显示
测试没有问题,图片字体正常显示,其他字体也是一样的操作步骤。
7、写到Dockerfile
写到Dockerfile里,保证部署所有环境都可以正常显示
Dockerfile在原有的基础上添加如下内容
#添加中文字体
RUN apk update && apk --no-cache add font-adobe-100dpi
RUN mkdir /usr/share/fonts/win
ADD yahei.ttf /usr/share/fonts/win/yahei.ttf
RUN chmod 777 /usr/share/fonts/win/yahei.ttf \
&& fc-cache -fv && fc-list
|