docker的精简镜像alpine内没有时区信息,在基于该镜像制作应用镜像时,需要配置时区信息,之前的做法是在其他容器时将宿主机的时区配置挂载到容器,如下所示:
docker run -itd -v /etc/localtime:/etc/localtime alpine bash
进入到容器内,时间确实已经是东八区时间:
bash-4.3# date
Tue Aug 7 09:32:21 CST 2018
但是对于Java应用来说,读取到的时间依然不是东八区时间,还需要挂载下面的时区文件才可以
docker run -itd -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone alpine bash
附 Java读取系统时区配置
方法一
在 tomcat的jvm 运行参数加上 -Duser.timezone=GMT+8,使用该配置,应用程序就会忽略系统设置的时区
方法二
配置文件/etc/sysconfig/clock,在文件内增加以下信息
ZONE=”Asia/Shanghai”
UTC=false
ARC=false
方法三
配置时区:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo “Asia/Shanghai”>>/etc/timezone