千云物流-openjdk:8-jdk-alpine镜像常见问题
时区问题,使用jdk获取当前时间慢8个小时使用docker exec命令进入容器内部发现alpine的时区是UTC时区,UTC时区是GTM0时区而北京时间是GTM+8时区,所以使用jdk localdatetime跟date获取到的时间总慢8个小时.date需要设置时间为北京时间解决方法设置Alpine linux系统时区 查找alpine linux的文档得知可以通过tzdata包来设置时区,在
·
时区问题,使用jdk获取当前时间慢8个小时
使用docker exec命令进入容器内部发现alpine的时区是UTC时区,UTC时区是GTM0时区而北京时间是GTM+8时区,所以使用jdk localdatetime跟date获取到的时间总慢8个小时.
date
需要设置时间为北京时间
解决方法
- 设置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
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(NativeMethod)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)
在容器化的alpine没用相关font资源,通过安装ttf-dejavu包可以解决这个问题
FROM java:8-alpineRUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositoriesRUN apk --update add curl bash ttf-dejavu && \
rm -rf /var/cache/apk/*
使用此Dockerfile重新build一个java镜像即可
更多推荐
已为社区贡献1条内容
所有评论(0)