docker alpine安装java_使用alpine openjdk8 docker镜像常见问题

时区错误,使用jdk获取当前时间慢8个小时

查找原因

8289172a37e0

2019-05-21 11-18-55屏幕截图.png

使用docker exec命令进入容器内部发现alpine的时区是UTC时区,UTC时区是GTM0时区而北京时间是GTM+8时区,所以使用jdk localdatetime跟date获取到的时间总慢8个小时.

知道原因就好办了,只要将时间设置成北京时间就好了.

解决方法

1设置Alpine linux系统时区

查找alpine linux的文档得知可以通过tzdata包来设置时区,在构建docker 镜像的时候,DockerFile加上这句话就好了

apk add tzdata && \

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \

echo "Asia/Shanghai" > /etc/timezone && \

apk del tzdata && \

文档链接https://wiki.alpinelinux.org/wiki/Setting_the_timezone

2设置JVM的系统默认时区

在启动Docker镜像的时候,通过设置user.timezone JVM环境变量来设置时区

我是这么做的

java -jar -Duser.timezone=Asia/Shanghai app.jar

使用openJdk渲染图片时抛出NullPointerException

错误堆栈如下

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.(SunFontManager.java:376)

at sun.awt.FcFontManager.(FcFontManager.java:35)

at sun.awt.X11FontManager.(X11FontManager.java:57)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at java.lang.Class.newInstance(Class.java:442)

at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)

at java.security.AccessController.doPrivileged(Native Method)

at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)

at java.awt.Font.getFont2D(Font.java:491)

at java.awt.Font.access$000(Font.java:224)

at java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)

查找原因

8289172a37e0

2019-05-21 11-46-25屏幕截图.png

在容器化的alpine没用相关font资源,通过安装ttf-dejavu包可以解决这个问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值