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/