4

Я создал докер-контейнер, который работает в неправильном часовом поясе. Мне лично нужно, чтобы он работал в моем часовом поясе (Европа / Стокгольм, GMT+1). Поскольку проект с открытым исходным кодом, другие пользователи могут также захотеть изменить это. Я хочу, чтобы кто-нибудь мог легко изменить это, например, в Dockerfile или в docker-compose.yml.

Если возможно, я также хотел бы, чтобы это решение было применимо не только для CentOS, если кто-то хочет использовать другой дистрибутив.

Каков наиболее неагрессивный подход для установки локального времени / часового пояса в моем док-контейнере?


Эти два подхода кажутся общими, но я не уверен, что они действительно лучший путь для меня:

Переменная окружения TZ

Некоторые дистрибутивы Linux читают переменную окружения TZ. Тем не менее, я заметил, что это не работает, когда я использую изображение centos:7 .

/ И т.д. / LocalTime

Вы можете сопоставить контейнер /etc/localtime с /etc/localtime на хосте в docker-compose.yml. Но при этом дистрибутивы, использующие /etc/timezone , остаются в UTC, а программное обеспечение, которое может читать, затем будет читать неправильный часовой пояс.

1 ответ1

3

Distro-agnostic требует сценария, который определяет, какой дистрибутив используется. Это связано с тем, что в каждом дистрибутивном "семействе" свой часовой пояс различен. Для некоторых добавление следующего в Dockerfile может работать:

RUN echo "Европа / Стокгольм"> / etc / timezone

Другие (например, Debian) требуют использования вышеуказанного, а затем следуют с другой командой Dockerfile, например:

RUN RUN sudo dpkg-переконфигурировать -f неинтерактивные tzdata

Для других дистрибутивов (IIRC, включая CentOS) потребуется что-то вроде:

RUN ln -s /usr /share /zoneinfo / Европа / Стокхом / etc / localtime

Создание этого дистро-агностика потребовало бы изучения метода каждого дистрибутива для переконфигурирования часового пояса. Если вы посмотрите на /etc /localtime, вы заметите, что это не текстовый файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .