2016-07-22 104 views
0

我正在尝试与我的主机同步码头集装箱的时区。我的主机使用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 

当我部署我的应用程序,我尝试更新日期,我可以看到2016年7月22日的日期正在使用我的浏览器时区,这与Docker容器正在运行的主机相同。但debbuging应用程序的服务器端我可以看到日期转换为UTC时区。这意味着Docker容器并未真正使用我安装的主机卷。

我错过了什么?

另一种方法我试过了,做的工作是更新的时区的泊坞窗容器:

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

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

在先进的感谢

+0

这听起来像你已经列出了与码头工人和工作中的应用程序是有问题的零件两种方式?不确定我们如何调试您的应用程序,因为我们没有关于甚至是什么的任何细节。 – BMitch

+0

我列出了两种应该可以工作的方法,是的,应用程序似乎是有问题的。该应用程序是我部署到tomcat docker容器中的一个GWT应用程序,我将端口暴露给主机以便能够访问应用程序并调试应用程序(您可以在docker命令中看到端口8080和8090)。我怀疑tomcat docker容器提供的jdk正在发生什么。 – despadina

+0

[如何更改Tomcat 7的服务器时区?](http://stackoverflow.com/questions/28777322/how-to-change-tomcat-7s-server-timezone) – BMitch

回答

1

调试和阅读有关日期和时间后,我觉得是非常有意义的后端存储在UTC/GMT的日期和时间,当它保存在该方式是独立于客户端的时区DB。因此,将tomcat服务器时区更改为与主机匹配并不是一个好习惯(这应该不重要)。

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

我希望我的解释是有道理的