OpenClaw Docker 部署踩坑:定时任务“失灵”,一句配置秒解决

0 阅读1分钟

问题现象

在阿里云服务器上用 Docker 部署 OpenClaw 后,通过飞书给机器人设置定时任务(如每天早上 8 点推送热榜)。到了时间,任务没有执行。

问题原因

环境时间时区
宿主机10:52 CST北京时间(UTC+8)
容器内02:50 UTC世界协调时(UTC+0)

Docker 容器默认使用 UTC 时间,与宿主机相差 8 小时。当你说“北京时间 8 点执行”时,容器按照 UTC 时间判断——它以为 UTC 0 点就是北京时间 8 点,实际上要等到 UTC 8 点(北京时间 16 点)才执行。

一句话:容器里的时间和外面不是同一个时间。


解决方案

修改 docker-compose.yml,挂载宿主机的时区文件:

services:
  openclaw:
    volumes:
      - /etc/localtime:/etc/localtime:ro   # 就这一行

重启容器:

cd /opt/openclaw
docker compose down && docker compose up -d

验证:

docker exec -it openclaw-gateway date

输出北京时间(CST),与宿主机一致。


经验总结

教训说明
容器时间 ≠ 宿主机时间Docker 容器默认 UTC,必须手动同步
定时任务依赖系统时间飞书指令按机器人自己的时间判断
一行配置省半天排查- /etc/localtime:/etc/localtime:ro

部署容器时顺手加一行配置,定时任务再也不“迟到”。 🕒