Debian

Debian Docker 容器中的 cron 時區問題

  • March 22, 2015

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

FROM debian:7
MAINTAINER pjb <pjb@example.com>

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/job:

* * * * * 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。

我最終直接在我的應用程序中設置了時區(由 cron 執行),它按預期工作。

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

引用自:https://serverfault.com/questions/677315