引言
前段时间使用 docker
的 node
镜像挂载了两个定时任务的 js
脚本,但是不按照我预设的 crontab
表达式执行。
原因以及解决方法
在运行 docker
容器时,直接设置了时区的全局变量,如下
ENV TZ='Asia/Shanghai'
由于在容器系统下使用了 crontab
服务,而 crontab
服务使用的时间都是通过 /etc/localtime
读取的。
因此不建议在 Dockerfile
文件中使用 TZ
环境变量,而推荐使用如下:
ENTRYPOINT ["bash" "-c" "cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime"]