Вот мой 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/timezone:
Europe/Paris
И /bin/date
дает мне корректное время.
Но дата, я проникаю внутрь /var/log/cron.log, является временем UTC. Это должен быть UTC+1.
В итоге я установил часовой пояс непосредственно в моем приложении (запускается cron), и оно работает должным образом.
ENV['TZ'] = 'Europe/Paris'