任务设的每天 2 点跑,实际在 10 点跑。

原因:容器时区是 UTC,cron 按 UTC 解释 2 点,等于北京时间 10 点。

解法:

  1. 容器设 TZ 环境变量
  2. 或者 cron 里用 CRON_TZ=Asia/Shanghai
  3. 应用层单独设时区

三处都要设,任何一处不对都会错。

排查方法:在容器里跑 date,看输出的时区;再看 crontab 的日志时间戳,对比。

现在我的部署脚本里固定带时区设置,新项目不用再想这事。

主楼