linux cpu占用率如何看
315
2022-10-18
Docker系列---【docker使用OpenJDK部署Springboot所遇到的字体问题】
1.问题描述+分析
本地调试的没问题,使用linux服务器jar包部署的也没问题,使用Docker的OpenJDK8报错了,报错信息如下,百度了一下,大家都说OpenJDK比OracleJDK简化了一些功能,所以后端绘制验证码所要用到Java的AWT组件就被简化了,结果报出空指针。要么换OracleJDK,要么就手动安装中文字库。有的甚至说不要用OpenJDK,对于公司要求OpenJDK的我来说,只能另想办法了,最关键的是我是离线环境,网上很多教程行不通,安一个发现安装工具都没有,安一个没有工具,真按教程来,正事没干,安工具就安废了。我也不可能每部署一个docker都要手动安装一遍中文字库。最后,我想了个办法,在有网的环境下把OpenJDK打包成包含fontconfig和字体 ttf-dejavu的镜像。然后导出镜像,再使用这个打包好的镜像就可以完美解决这个问题了。
java.lang.NullPointerException: null at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) at sun.awt.FontConfiguration.init(FontConfiguration.java:107) at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774) at sun.font.SunFontManager$2.run(SunFontManager.java:431) at java.security.AccessController.doPrivileged(Native Method) at sun.font.SunFontManager.
2.在有网的服务器上新建Dockerfile文件
内容如下:
From alpineMAINTAINER hjw/openjdk8RUN echo -e '> /etc/apk/repositories && \ apk update && \ apk add openjdk8 curl busybox tzdata && \ apk --no-cache add ttf-dejavu fontconfig &&\ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo Asia/Shanghai > /etc/timezone && \ apk del tzdata && \ rm -rf /tmp/* /var/cache/apk/*
3.打包镜像
docker build -t openjdk8:v1 .
4.导出镜像
这里注意不要用镜像ID,用镜像名称:版本号,否则导入的时候有可能不显示镜像名称和版本号,从而变成了游离镜像。
docker save -o openjdk88.tar openjdk8:v1
5.传到内网服务器上,导入OpenJDK8:v1镜像
docker load -i openjdk88.tar
6.Dockerfile
FROM openjdk8:v1LABEL name="bob_demo" version="1.0.0" author="hjw"ADD target/*.jar /app.jarEXPOSE 8080ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=test","&"]
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~