Django linux“;日期“;正确,但python tzlocal在docker容器中报告utc
我正在加载docker compose文件Django linux“;日期“;正确,但python tzlocal在docker容器中报告utc,django,docker,Django,Docker,我正在加载docker compose文件 volumes: - /etc/localtime:/etc/localtime:ro 当我和你一起进入容器时 docker exec-it bash 然后运行date它会正确显示。但在django和python3编辑器中,tzlocal显示UTC ogixbuild$docker exec-it qlogixwebapi bash root@3e1a15562c2f:/var/lib/django/webapi#date 2018年2月8日星期
volumes:
- /etc/localtime:/etc/localtime:ro
当我和你一起进入容器时
docker exec-it bash
然后运行date
它会正确显示。但在django和python3编辑器中,tzlocal显示UTC
ogixbuild$docker exec-it qlogixwebapi bash
root@3e1a15562c2f:/var/lib/django/webapi#date
2018年2月8日星期四15:14:31 MST
root@3e1a15562c2f:/var/lib/django/webapi#python3
Python 3.6.4(默认值,2017年12月21日01:35:12)
[GCC 4.9.2]在linux上
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
本地进口
tzlocal.get_localzone()
有过这方面的经验的人知道如何让tzlocal获得正确的时区吗?因此,通过将这两个卷添加到docker compose文件,我现在有了工作时区。
日期
命令和tzlocal命令都起作用
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
root@96245334a7c9:/var/lib/django/webapi#date
2018年2月8日星期四18:45:23 MST
root@96245334a7c9:/var/lib/django/webapi#python3
Python 3.6.4(默认值,2017年12月21日01:35:12)
[GCC 4.9.2]在linux上
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”
本地进口
tzlocal.get_localzone()
DstTzInfo“美国/丹佛”LMT-1日,标准时间17:00:00
正如您所看到的,日期和tzlocal现在都返回正确的时间和时区。现在我的django应用程序按预期工作
我喜欢这种方法,因为它将主机时间动态地放入docker容器中。没有硬编码时区或任何东西。这是django python shell吗?那么下面是相关的否,这是docker容器中的bash shell。我看到在我的主机上/etc/localtime是一个符号链接,而在docker容器中/etc/localtime是一个文件(主机符号链接的结果),我认为这与此有关。我现在在tzlocal源代码中看到,它首先尝试从环境中获取时区,然后在/etc/timezone中查找。My/etc/时区包含etc/UTC。因此,它甚至没有进入tzlocal中查看/etc/localtime的代码。因此,我需要docker compose或Dockerfile来填充/etc/timezone或设置TZ环境变量。true,这就是我希望看到结果的原因。但是,在redhat中,解析路径是
/etc/localtime
,它是指向/usr/share/zoneinfo
中一个文件的符号链接。关于/etc/timezone