如何在我的 ddev 容器中设置时区?
How can I set the timezone in my ddev containers?
我经常使用 ddev ssh
(对于 web/nginx 容器)或 ddev ssh -s db
(对于 db/mariadb 容器),在查看日志等时我喜欢在我自己的时区查看 date/timestamps,这样我就不必费心考虑距格林威治标准时间多少小时了。我无法在容器中使用dpkg-reconfigure tzdata
,因为容器用户没有root权限。
2019-06-24 更新:从 ddev v1.9.0+ 开始,您只需在 .ddev/config.yaml 中配置它:例如 timezone: Europe/London
,或 ddev config --timezone=Europe/London
这配置了容器的时区和 php 的默认时区。
同样在v1.9.0中,容器中的时区默认为UTC。
旧 docker-compose.*.yaml 答案:
使用额外的 docker-compose 文件(对于 TZ)和 php 覆盖(对于 PHP)很容易做到这一点。例如,在我的项目中,我有一个 .ddev/docker-compose.timezone.yaml 将这些容器中的 TZ 变量设置为我的时区,还有一个 .ddev/php/tz.ini 为 [= 设置默认时区34=](php 不再考虑 TZ 环境变量,参见 php doc。
.ddev/docker-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在web容器中设置时区。事实上,.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
如上所述,您还需要在 .ddev/php/tz.ini
、
中覆盖 PHP
date.timezone = Europe/Berlin
我经常使用 ddev ssh
(对于 web/nginx 容器)或 ddev ssh -s db
(对于 db/mariadb 容器),在查看日志等时我喜欢在我自己的时区查看 date/timestamps,这样我就不必费心考虑距格林威治标准时间多少小时了。我无法在容器中使用dpkg-reconfigure tzdata
,因为容器用户没有root权限。
2019-06-24 更新:从 ddev v1.9.0+ 开始,您只需在 .ddev/config.yaml 中配置它:例如 timezone: Europe/London
,或 ddev config --timezone=Europe/London
这配置了容器的时区和 php 的默认时区。
同样在v1.9.0中,容器中的时区默认为UTC。
旧 docker-compose.*.yaml 答案:
使用额外的 docker-compose 文件(对于 TZ)和 php 覆盖(对于 PHP)很容易做到这一点。例如,在我的项目中,我有一个 .ddev/docker-compose.timezone.yaml 将这些容器中的 TZ 变量设置为我的时区,还有一个 .ddev/php/tz.ini 为 [= 设置默认时区34=](php 不再考虑 TZ 环境变量,参见 php doc。
.ddev/docker-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在web容器中设置时区。事实上,.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
如上所述,您还需要在 .ddev/php/tz.ini
、
date.timezone = Europe/Berlin