Docker-Alpine-Timezone-Encoding
时区问题
alpine镜像默认时区是UTC,执行命令date可以进行查看时区,默认返回Mon Jul 16 03:43:52 UTC 2018,因此在查看日志,以及java代码里使用new date()时获取的时间时UTC格式的。
原因
解决apline时区问题只需安装tzdata然后设置下就可以了,在alpine执行
添加字体的化安装ttf-dejavu解决
1 | java.lang.NullPointerException: null |
1 | date #查看时区UTC |
解决方式一(采用)
镜像大小:
- java:8-jre-alpine 107.9M
- java:8-jre-alpine-cst 109.2M
封装docker镜像一层,这里操作的基础镜像是用java:8-jre-alpine进行封装
1 | # 生成镜像name:java:8-jre-alpine-cst |
下次直接就直接使用自己的镜像java:8-jre-alpine-cst
参考:Linux下修改时区
解决方式二
可以直接封装在java:8-jre-alpine镜像里,这种需要知道java:8-jre-alpine镜像的dockerfile于构建所需的环境包,这种方式构建镜像理论上应该比方式一小。
解决方式三
在构建java应用程序时构建进行时区设置,这种方式存在,每次打包都要构建安装执行tzdata,在网差的情况下,这种构建就很慢了
1 | #基础镜像选择alpine 小巧安全流行方便 |
debian 系统
1 | #TZ=Asia/Shanghai |
dockerfile 设置
1 | ENV TZ=Asia/Shanghai |