与docker容器共享主机时区

时间:2016-07-22 13:05:14

标签: date docker timezone

我正在尝试将docker容器的时区与我的主机同步。我的主机正在使用ISM,而docker容器(使用tomcat映像)默认使用UTC。我已经读过我们应该安装一个卷来共享主机的时区:

$ docker run -t -i -p 8080:8080 -p 8090:8090 -v /etc/localtime:/etc/localtime:ro tomcat:7.0.69-jre8 /bin/bash

之后,我可以检查检索到的日期是否与主机相同:

$ date
Fri Jul 22 13:53:45 IST 2016

当我部署我的应用程序并尝试更新日期时,我可以看到日期22/07/2016正在使用我的浏览器时区,这与运行docker容器的主机相同。但是对应用程序的服务器端进行调整我可以看到日期转换为UTC时区。这意味着docker容器并没有真正使用我安装的主机卷。

我错过了什么吗?

我尝试过的另一种方法是更新docker容器中的时区:

$ dpkg-reconfigure tzdata // Selecting the corresponding options afterwards

这样我可以在我的应用程序的客户端和服务器端看到相同的时区。

先谢谢

1 个答案:

答案 0 :(得分:2)

在调试和阅读有关日期和时间后,我认为后端以UTC / GMT格式存储日期和时间是有意义的,这种方式与客户端保存在数据库中的时区无关。因此,更改tomcat服务器时区以匹配主机(这应该不重要)不是一个好习惯。

我遇到的问题是前端使用日期和时间(UTC / GMT +1),时间设置为00:00h,当它到达后端时,日期和时间转换为UTC / GMT这使它成为前一天的23:00。持久层只是存储错误的日期,因为我们丢失数据(时间),当我们尝试从数据库中检索该记录时,我们将获得没有时间的上一个日期,因此它不是我们期望的结果。

我希望我的解释有意义

相关问题