Есть несколько способов задания даты и времени на уже созданном и ещё не созданном docker контейнере с debian.
Первый способ с уже созданным контейнером. Входим в него от суперпользователя:
docker exec -u root -it id_контейнера bash
Выполняем команду:
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
echo «Europe/Moscow» > /etc/timezone
Время изменится. Можно сразу проверять:
date
Аналогичное действие можно сделать через директивы в файле docker compose при создании контейнера:
RUN rm -rf /etc/localtime
RUN ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
RUN echo «Europe/Moscow» > /etc/timezone
Второй способ задать время — из docker compose файла при создании контейнера. Добавляем в volumes два системных файла, чтобы время в контейнере всегда совпадало с временем в системе:
volumes:
— /etc/timezone:/etc/timezone:ro
— /etc/localtime:/etc/localtime:ro
Это самый логичный способ для тех проектов, которые сильно гео распределены или имеют базу данных внутри контейнера, куда записывается текущее время/дата.
Если контейнер создаётся не из docker compose файла, а из команды, то можно передать значения в ключах:
… -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro
Третий способ — в docker compose файле добавить директиву для установки значения переменной окружения:
ENV TZ=»Europe/Moscow»