Docker 解决容器时区时间不一致问题

问题

项目部署上线后发现容器内时间和宿主机相差 8 个小时。原因是容器默认时区为 UTC,与中国时区(UTC+8)不一致。

解决:设置 TZ 环境变量

修改 docker-compose.yml,添加 environment 参数:

1environment:
2  - TZ=Asia/Shanghai

完整示例:

 1version: "3"
 2services:
 3  app:
 4    container_name: document
 5    image: app:2015
 6    # 解决时区问题
 7    environment:
 8      - TZ=Asia/Shanghai
 9    volumes:
10      - ./app/logs:/opt/app/logs
11      - ./app/application.yml:/opt/document/application.yml:ro
12    ports:
13      - 1590:1590
14    links:
15      - mysql
16      - web

其他解决方式:挂载宿主机时区文件

将宿主机的时间和时区文件挂载到容器中:

1docker run -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -ti centos bash