描述:
有一个业务是需要后台生成图片,后台使用了Graphics2D类。在docker部署时,图片上的中文变成方块。
解决方案:
百度了一下,发现是生产上的docker容器下没有中文字体,需要在容器里面添加中文字体,但是这样的话要单独维护一个中文字体的镜像。后来直接在代码里面处理,字体文件放在resouces下面,代码直接根据这个文件生成字体。
发现这样处理还是有问题,又度娘了一下,百度说是因为制作镜像的时候Dockerfile使用的是open-jdk,里面没有字体的功能。结果docker容器还是要安装字体服务,在Dockerfile加入安装字体的语句,生成镜像后用新镜像启动容器
用的是oracle-jdk应该是没有问题的,使用open-jdk,需要在Dockerfile添加 RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* 生成镜像即可