Docker 容器中时间差8个小时的解决办法
背景
开发了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