网上找过资料了 下面这个设置无效
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
确切的说,docker exec -it xxx /bin/bash
然后 运行 date
看到的时间是有效的(没有 8 小时的时差)
但是我里面运行的 django 显示的时间,是差了 8 个小时的, docker 日志也是差了 8 小时的
2018-04-28T15:20:43.861694000Z Performing system checks...
2018-04-28T15:20:44.059789000Z System check identified no issues (0 silenced).
2018-04-28T15:20:44.099574000Z April 28, 2018 - 15:20:44
2018-04-28T15:20:44.099795000Z Django version 2.0.3, using settings 'xxx.settings'
2018-04-28T15:20:44.099940000Z Starting development server at http://0.0.0.0:8080/
2018-04-28T15:20:44.100072000Z Quit the server with CONTROL-C.
也试过在docker-compose
文件中挂在本地的localtime
文件,依旧无效
volumes:
- .:/code
- /etc/localtime:/etc/localtime:ro
上面两种方式混合,也试过了,无效
1
helloworld12 OP 在 docker 文件中加入 `RUN date` 显示的时间却是正常的,就是不知道,为什么`docker logs -t xxx` 显示的时间是差了 8 小时的, `CMD ["python", "./manage.py", "runserver", "0.0.0.0:8080"]` 显示的时间也是差了 8 小时的
|
2
helloworld12 OP 评论不支持 markdown 啊...
|
3
helloworld12 OP [这个帖子的好像也是同样的问题]( https://segmentfault.com/q/1010000005776163)
|
4
smilekung 2018-04-28 23:56:21 +08:00 via Android
把本地 localtime 挂载进容器 只读模式即可
|
5
helloworld12 OP @smilekung - /etc/localtime:/etc/localtime:ro
是只读模式啊? |
6
SbloodyS 2018-04-29 00:15:33 +08:00
Dockerfile 里 COPY /etc/localtime /etc/localtime 即可
|
7
blless 2018-04-29 00:41:23 +08:00 via Android
要安装 tzdata 包 然后设置 TZ 变量就好 tzdata 以前都有带的 后来不知道为啥现在基础镜像都没这个包了
|
8
znood 2018-04-29 09:12:05 +08:00 via iPhone
首先,这个是时区,不是时间问题,既然已经设置过了 date 也显示正常那是不是要考虑 django 的问题,比如为什么它没读取时区
|
11
helloworld12 OP |
13
znood 2018-04-29 22:25:54 +08:00 via iPhone 1
@helloworld12 首先你问题就没说清楚,你说的时间不对其实是时区不对,而且是 docker logs -t 的时间,不是 django 自己打印的时间。
你明白 logs -t 参数的意义吗?你知道 docker 是怎么记录日志读取日志的吗?-t 参数是在原有日志基础上加了时间戳,而且这个时间戳显示的格式化格式是固定的。 也就是说你在拿一个不是问题,自己没有说明具体情况而又解决不了的问题问大家,浪费时间。 |