peterlyz (@peterlyz520) 在 折腾了俩小时才发现,Docker 容器时间不对竟是因为没挂时区 中发帖
起因是我部署的一个定时任务老是差 8 小时执行,日志时间也对不上。一开始怀疑是 cron 表达式写错,改了半天没用。
后来 docker exec 进容器 date 一看,时间是 UTC,宿主机却是 CST。瞎折腾了半个多小时(mark一下)。
后来搜了下这个问题(找到三种解法):
挂载宿主机时区文件(最干净,推荐):
volumes:
/etc/localtime:/etc/localtime:ro
/etc/timezone:/etc/timezone:ro
设环境变量 TZ=Asia/Shanghai(需镜像装了 tzdata 才生效)
Dockerfile 里 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
踩这个坑的佬应该不止我一个,记录一下。你们一般用哪种方案?