問題:
最近因公司業務由傳統虛擬機方式遷移至容器docker方式部署后,最近發現系統某處導出excel報表后無內容(0字節)
報錯:
Error: java.lang.reflect.InvocationTargetException com.alibaba.excel.exception.ExcelGenerateException: java.lang.InternalError: java.lang.reflect.InvocationTargetException
java.lang.NullPointerException: null at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
解決方法:
出處:https://www.cnblogs.com/liucx/
經過百度,谷歌查找資料,是由於docker基礎鏡像使用的是Alpine環境,缺少對應的字體包.
在 Dockerfile 中進行修改,增加如下內容:
ENV LANG en_US.UTF-8
RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
通過添加fontconfig和一款字體dejavu,可以完美解決詞問題。
不過最好的方法還是封裝一個鏡像,替換掉官方的底包。流水線上每次打包都安裝ttf-dejavu還是挺慢的。