解决Docker部署缺失字体导致打印、导出失败,工作流图片显示乱码

最近项目测试,本地用的jenkins打包测试,测试都没有问题。

但是项目上线需要用到docker容器部署到华为云(基础镜像是openjdk:8-jdk-alpine),但是在部署后,EasyExcel总是提示创建失败iReport打印提示好像是缺少类还是类转换失败(忘记了,没有截图)、activity工作流图片前端显示乱码。最终确定是由于没有中文环境导致的。


activity工作流乱码

由于书到用时方恨少,于是网络上找了好多类似的情况,都没有完美解决所有问题。

期间过程,不是缺少这个命令就是那个命令不支持,弄得很烦躁。

最终综合靠谱的方案,字体终于安装好了,但在安装完中文字体后,利用命令fc-list :lang=zh检查安装效果,可又提示UTF-8不是一个有效的标签(应该是,没截图忘记了)。最后设置了一下环境变量ENV LANG C.UTF-8 才解决了所有问题。

整完之后快凌晨3点了。

特此记录一下,有可能会对大家有所帮助。附上完整的DockerFile公用配置

【alpine系统的更新源】如果不设置,访问的是国外网站,可能有些company的网络环境不允许访问,就会导致执行失败。此处设置为阿里云即可,如果再不行,上流量吧。

FROM openjdk:8-jdk-alpine# 设置环境变量ENV LANG C.UTF-8# /etc/apk/repositories 是alpine系统的更新源配置# 将alpine系统的更新源镜像设置为阿里云。RUN echo "http://mirrors.aliyun.com/alpine/v3.9/main" > /etc/apk/repositories \&& echo "http://mirrors.aliyun.com/alpine/v3.9/community" >> /etc/apk/repositories \&& apk update upgrade \# 安装时区&& apk add --no-cache procps unzip curl bash tzdata \# 安装开源字体&& apk add --update font-adobe-100dpi ttf-dejavu fontconfig \# 调整时区为中国上海&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone#复制自定义字体。 fonts为本地需要安装的字体的自定义目录,将字体复制到本文件加下即可COPY fonts /usr/share/fonts/#重建字体索引RUN chmod 777 /usr/share/fonts/ \&& fc-cache -fv && fc-list。。。。。。。。。。。。后续就是自己工程的配置了,这里就不贴了
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章