Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 与docker容器共享主机时区_Date_Docker_Timezone - Fatal编程技术网

Date 与docker容器共享主机时区

Date 与docker容器共享主机时区,date,docker,timezone,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 之后,我可以检查检索的日期是否与

我正在尝试将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
之后,我可以检查检索的日期是否与主机相同:

$ 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容器运行的主机相同。但是在应用程序的服务器端,我可以看到日期被转换成UTC时区。这意味着docker容器没有真正使用我装载的主机卷

我遗漏了什么吗

我尝试并完成工作的另一种方法是更新docker容器中的时区:

$ dpkg-reconfigure tzdata // Selecting the corresponding options afterwards
这样我就可以在客户端和服务器端的应用程序中看到相同的时区


在调试并阅读了日期和时间之后,我认为后端以UTC/GMT存储日期和时间是有意义的,这样在数据库中保存日期和时间时,它与客户端的时区无关。因此,将tomcat服务器时区更改为与主机匹配不是一个好的做法(这其实并不重要)

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


我希望我的解释有意义

听起来您列出了使用Docker的两种方法,并且您的应用程序是有问题的部分?我不确定我们如何调试你的应用程序,因为我们没有关于这是什么的任何细节。我确实列出了两种可行的方法,是的,应用程序似乎是有问题的。该应用程序是一个GWT应用程序,我将其部署到tomcat docker容器中,并向主机公开端口,以便能够访问该应用程序并调试该应用程序(正如您在docker命令中看到的端口8080和8090)。我怀疑tomcat docker容器提供的jdk有问题