解决Alpine镜像缺少字体的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Alpine镜像缺少字体的问题相关的知识,希望对你有一定的参考价值。

Issue
前言:开发人员在使用监控报表管理系统时,导出Excel时,报空指针异常:
[2020-05-11 14:31:47] ERROR com.ruoyi.common.utils.poi.ExcelUtilcreateSheet - .......创建工作表Exception:{} java.lang.NullPointerException: null
2020-05-11 14:31:47] ERROR com.ruoyi.common.utils.poi.ExcelUtilexportExcel - 导出Excel异常null
[2020-05-11 14:31:47] ERROR com.ruoyi.framework.web.exception.GlobalExceptionHandlerbusinessException - 导出Excel失败,请联系网站管理员! com.ruoyi.common.exception.BusinessException: 导出Excel失败,请联系网站管理员!

最终发现问题出在 Excel 组件上. Excel 组件试图根据字体大小自动调整单元格宽度 , 当寻找 fontconfig 时找不到, 返回 null ,是由于Alpine镜像缺少相关依赖包导致。

解决办法
1
在原有的镜像基础上,安装需要的依赖包,生成新的镜像,供开发人员使用
Dockerfile如下:
FROM 10.0.0.100/dev/openjdk8-monitor:v1 ###原始开发人员使用的镜像
RUN sed -i ‘s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g‘ ###替换镜像源 /etc/apk/repositories
RUN apk add --update tzdata busybox-extras fontconfig ttf-dejavu
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& echo "Asia/Shanghai" > /etc/timezone
&& rm -fr /var/cache/apk/* ##安装相关的依赖包

执行构建:docker build -t 10.0.0.100/dev/openjdk8-monitor:v2 .

通过添加 fontconfig 和一款字体 dejavu , 可以完美解决问题

参考链接: https://lhalcyon.com/alpine-font-issue/

以上是关于解决Alpine镜像缺少字体的问题的主要内容,如果未能解决你的问题,请参考以下文章

8u111-jdk-alpine 字体缺少FontConfiguration的NullPointerException错误解决方案

8u111-jdk-alpine 字体缺少FontConfiguration的NullPointerException错误解决方案

基于alpine镜像构建的步骤

基于alpine镜像构建的步骤

golang编写的项目,使用alpine制作镜像遇到的一个问题解决

docker 下 alpine 镜像设置时区的有效办法