ddev - 如何在我的 ddev 容器中设置时区?
问题描述
我经常使用ddev ssh
(用于 web/nginx 容器)或ddev ssh -s db
(用于 db/mariadb 容器),并且在查看日志等时,我希望在我自己的时区中查看日期/时间戳,所以我不必这么费劲从格林威治标准时间算起多少小时。我不能dpkg-reconfigure tzdata
在容器中使用,因为容器用户没有 root 权限。
解决方案
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
推荐阅读
- entity-framework - 如何在连接中使用 lambda 表达式
- visual-studio - 例外:未找到与约束合同名称匹配的导出:Nuget.VisualStudio.IVsPackageInstaller
- mysql - MySQL:将 GROUP_CONCAT 中的 null 替换为 0
- php - 从具有公共列的两个表中选择全部 - 相同的列名
- c - C - 如何为每个数组元素动态分配内存?
- github - 原始的 draft-js 和分叉的 draft-js,安装时具有不同的结构
- jmeter - 使用 jmeter 进行后端 Java 应用程序测试
- c# - 自动实现属性并删除其支持字段
- sql - 返回嵌套层次结构行的单个查询
- codemirror - Codemirror 最后一行 textarea 不可读,半截断