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 |