解決docker中Easyexcel因缺少字體無法導出的問題

問題:
        最近因公司業務由傳統虛擬機方式遷移至容器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還是挺慢的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章