Debian Docker 容器内的 cron 时区问题

Debian Docker 容器内的 cron 时区问题

这是我的 Dockerfile(或者至少是有趣的部分):

FROM debian:7
MAINTAINER pjb <[email protected]>

RUN apt-get update && apt-get install -y build-essential ntp cron

ADD config/job /etc/cron.d/job
ADD config/cron /etc/default/cron
RUN chmod 0644 /etc/cron.d/job

CMD cron && tail -f /var/log/cron.log

我使用这个命令来运行容器:

docker run -d --restart=always -e "TZ=Europe/Paris" -v /etc/timezone:/etc/timezone:ro --name=mycontainer pjb/repo

当我进入容器(docker exec -it mycontainer bash)时,一切看起来都很好:

/etc/cron.d/作业:

* * * * * root /bin/date >> /var/log/cron.log 2>&1

在 /etc/default/cron 中:

READ_ENV="yes"
TZ="Europe/Paris"

在 /etc/时区中:

Europe/Paris

/bin/date告诉我正确的时间。

但是我在 /var/log/cron.log 中获取的日期是 UTC 时间。它应该是 UTC+1。

答案1

我最终直接设置了时区在我的申请中(由 cron 运行),并且它按预期工作。

ENV['TZ'] = 'Europe/Paris'

相关内容