在使用docker部署的过程中,我们会遇到一些关于时区的问题,比如查看日志的时候发现左侧的时间比目前时间早八小时、或者mysql的CURRENT_TIMESTAMP查出来比目前早八小时等等
解决方法
在Dockerfile中加个红色圈住的代码:
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" >> /etc/timezone
"-Duser.timezone=GMT+08"
如果Dockerfile中没写CMD,可以在docker-compose.yml中对应的镜像下面添加command属性,值和上面的CMD一样。
Mysql时区问题
如果上述这样打包的mysql镜像运行起来时区还是有问题的话,执行以下代码:
# 设置全局时区 mysql> set global time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
# 设置时区为东八区 mysql> set time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限使设置立即生效 mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | +08:00 |
+------------------+--------+
2 rows in set (0.00 sec)