Как я могу установить часовой пояс в моих контейнерах ddev?

Я часто использую ddev ssh (для контейнера web/nginx) или ddev ssh -s db (для контейнера db/mariadb), и при просмотре журналов и тому подобного я хотел бы видеть метки даты / времени в своем собственном часовом поясе, поэтому мне не нужно так много думать о том, сколько часов от GMT. Я не могу использовать dpkg-reconfigure tzdata в контейнере, потому что пользователь контейнера не имеет привилегий root.

1 ответ

Решение

Это легко сделать с помощью дополнительного файла docker-compose (для TZ) и переопределения php (для PHP). Например, в моем проекте у меня есть.ddev/docker-compose.timezone.yaml, который устанавливает переменную TZ в этих контейнерах для моего часового пояса, и.ddev / php / tz.ini, который устанавливает часовой пояс по умолчанию для php (php hasn больше не уважайте переменную окружения TZ, см. php doc.

.ddev / докер-compose.timezone.yaml:

version: '3.6'

services:
  web:
    environment:
      - TZ=Europe/Berlin
 db:
    environment:
      - TZ=Europe/Berlin

и.ddev/php/tz.ini:

date.timezone = Europe/Berlin

Начиная с ddev v1.8.0, вы также можете установить часовой пояс в веб-контейнере, настроив.ddev/webimage-build/Dockerfile. Фактически,.ddev/webimage-build/Dockerfile.example делает именно это:

ARG BASE_IMAGE=drud/ddev-webserver:v1.8.0
FROM $BASE_IMAGE
RUN ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime && dpkg-reconfigure --frontend noninteractive tzdata

Как и выше, вам также нужно переопределить PHP в .ddev/php/tz.ini,

date.timezone = Europe/Berlin
Другие вопросы по тегам