Docker 容器内的系统时间不正确

我的 mysql 运行在 docker container 中,因为每次插入数据的时候,记录的 create_time 都是通过在 sql 中指定 NOW() 来生成的,结果发现日期每次都不正确,于是猜想是不是系统时间不对,结果还真是,这种情况有什么优雅的解决方式么?

1 个解决方案

AllenJiang
中间件研发,关注微信公众号 : 小哈学Java, 回复"666", 即可免费领取10G学习&面试资料

Docker container 时间不对是因为,你从镜像 build 的时候,那个镜像的时区是不对的。

例如,DockerHub 上面的镜像一般都是外国友人上传的,时区当然和中国不一致了

解决办法:

方案 1:在 Dockerfile 中指定时区:

RUN echo "Asia/Shanghai" > /etc/timezone;

如:这里改成上海时区

方案 2:在启动容器的时候,通过命令参数将容器的时间挂载到 host 宿主机上的时间:

-v /etc/localtime:/etc/localtime