标签 时区 下的文章

背景

开发了springboot项目,部署到了docker上。运行后发现时间总是少8小时。其实可以确定就是时区的问题,苦于不是很熟悉这块内容,来来回回折腾了好几个小时才搞定。

处理过程

修改docker-compose文件

网上搜了下,发现很多这类问题的帖子,而且处理很简单,拷贝了一个,挂载localtime。

-v /etc/localtime:/etc/localtime

并且修改了宿主机的localtime,然而并没有解决,进入容器查看时间发现是对的,但是程序日志和存入数据库的时间依然不正确。

数据库时区设置

后来想着是不是数据库的时区问题,修改了数据库的时区

mysql> set global time_zone = '+8:00';
mysql> set time_zone = '+8:00';
mysql> flush privileges;

然而,还是没有解决。

timezone修改

后来发现是少修改了一个timezone。

解决方案

Dockerfile中添加了如下内容,将timezone设置为+8,问题解决。

RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata