django - linux “date”是正确的,但是python tzlocal报告docker容器中的utc

标签 django docker

我正在docker撰写文件中挂载

volumes:
  - /etc/localtime:/etc/localtime:ro

当我带着docker exec -it <containername> bash然后运行date,它会正确显示。但是在Django和python3编辑器中,tzlocal显示UTC。
ogixbuild$ docker exec -it qlogixwebapi bash root@3e1a15562c2f:/var/lib/django/webapi# date Thu Feb 8 15:14:31 MST 2018 root@3e1a15562c2f:/var/lib/django/webapi# python3 Python 3.6.4 (default, Dec 21 2017, 01:35:12) [GCC 4.9.2] on linux Type "help", "copyright", "credits" or "license" for more information. import tzlocal tzlocal.get_localzone() <StaticTzInfo 'Etc/UTC'>
任何对此有任何经验的人都知道如何获取tzlocal以获得正确的时区?

最佳答案

因此,通过将两个卷都添加到docker-compose文件中,我现在有了工作时区。 date命令和tzlocal均可使用。

volumes:
  - /etc/localtime:/etc/localtime:ro
  - /etc/timezone:/etc/timezone:ro

root@96245334a7c9:/var/lib/django/webapi# date

Thu Feb 8 18:45:23 MST 2018

root@96245334a7c9:/var/lib/django/webapi# python3

Python 3.6.4 (default, Dec 21 2017, 01:35:12)

[GCC 4.9.2] on linux

Type "help", "copyright", "credits" or "license" for more information.

import tzlocal

tzlocal.get_localzone()

DstTzInfo 'America/Denver' LMT-1 day, 17:00:00 STD



如您所见,date和tzlocal现在都返回带有时区的正确时间。现在,我的django应用程序可以按预期工作。

我喜欢这种方法,因为它可以使主机时间动态地进入docker容器。没有硬编码的时区或其他任何内容。

关于django - linux “date”是正确的,但是python tzlocal报告docker容器中的utc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695750/

相关文章:

mysql - 无法将外键的值更改为对象Django的外键

python - django manage.py migrate 命令是否创建数据库/模式(如果不存在)?

java - 为什么我可以在 Docker 中运行 svn?

docker - 我可以在 Docker 容器中运行多个程序吗?

docker - 从所有kubernetes节点删除旧的Docker镜像

linux - 需要在没有互联网连接的情况下在 docker 容器中安装 rpm 包

python - 从 Amazon S3 迁移到 Azure 存储(Django Web 应用程序)

javascript - 如何在 Django 基于类的 View 中通过 mime-type 区分响应?

python - Django 导入问题

docker - 运行命令时Dockerfile中的错误-> docker logs test-client