0

我经常使用ddev ssh(用于 web/nginx 容器)或ddev ssh -s db(用于 db/mariadb 容器),并且在查看日志等时,我希望在我自己的时区中查看日期/时间戳,所以我不必这么费劲从格林威治标准时间算起多少小时。我不能dpkg-reconfigure tzdata在容器中使用,因为容器用户没有 root 权限。

4

2 回答 2

5

2019 年 6 月 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 设置 php 的默认时区(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
于 2018-05-09T14:06:51.187 回答
1

从 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

如上所述,您还需要一个 PHP 覆盖.ddev/php/tz.ini

date.timezone = Europe/Berlin
于 2019-05-14T21:48:06.893 回答