在 docker 容器中的 Nginx 无法正确获得 $time_local 的原因和解决方案

467 阅读1分钟

nginx在系统的环境参数TZ中获得当前时区信息, 以在access.log正确写入$time_local.

容器中默认为0时区, 因此需要设置容器的TZ环境变量: TZ="Asia/Shanghai".

如果用docker-compose启动的容器, 可以在docker-compose.yml配置中, 对应nginx容器的service段, 使用environment参数设置即可, 示例如下:

services:
    nginx:
        environment:
            TZ: 'Asia/Shanghai'

如果是用docker run直接启动的, 在dockerfile中添加ENV TZ="Asia/Shanghai"即可.

特别地, 如果使用了分阶段构建, 确定此项设置在最后一个构建阶段中.