2016-07-22 12 views
0

Ich versuche, die Zeitzone eines Andock-Containers mit meinem Host zu synchronisieren. Mein Host verwendet ISM und der Andock-Container (mit einem Tomcat-Image) verwendet standardmäßig UTC. Ich habe gelesen, dass wir ein Volumen montieren sollte die Zeitzone des Hosts zu teilen:Zeitzone des Hosts mit Andock-Container teilen

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

Danach kann ich überprüfen, dass das abgerufene Datum der gleiche wie der Wirt:

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

Als ich Stellen Sie meine Anwendung bereit, und ich versuche, ein Datum zu aktualisieren. Ich kann sehen, dass das Datum 22/07/2016 die Zeitzone meines Browsers verwendet, die mit dem Host identisch ist, auf dem der Andock-Container ausgeführt wird. Aber wenn ich die Serverseite der App debugge, kann ich sehen, dass das Datum in die UTC-Zeitzone umgewandelt wird. Dies bedeutet, dass der Andock-Container nicht wirklich das Host-Volume verwendet, das ich bereitgestellt habe.

Fehle ich etwas?

Eine andere Art und Weise habe ich versucht, und funktionierte die Zeitzone in der Docker Behälter wurde Aktualisierung: Client-Seite und Server-Seite meiner App:

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

So kann ich die gleiche Zeitzone in beide sehen können.

Vielen Dank im fortgeschrittenen

+0

Es klingt wie Sie zwei Möglichkeiten aufgelistet haben, die mit Docker arbeiten und dass Ihre Anwendung ist der Teil, der Probleme hat? Nicht sicher, wie wir Ihre Anwendung debuggen können, da wir keine Details darüber haben, was das überhaupt ist. – BMitch

+0

Ich habe zwei Wege aufgelistet, die funktionieren sollten und ja, die Anwendung scheint die zu sein, die Probleme hat. Bei der Anwendung handelt es sich um eine GWT-Anwendung, die ich im Tomcat-Docker-Container bereitgestellt habe, und ich habe dem Host Ports offengelegt, um auf die App zugreifen und die App debuggen zu können (wie Sie die Ports 8080 und 8090 im Docker-Befehl sehen). Ich vermute, dass etwas mit dem jdk vor sich geht, das mit dem tomcat docker container geliefert wurde. – despadina

+0

Mögliches Duplikat von [Wie ändere ich die Zeitzone von Tomcat 7?] (Http://stackoverflow.com/questions/28777322/how-to-change-tomcat-7s-server-timezone) – BMitch

Antwort

1

Nach Debuggen und über Datum und Uhrzeit zu lesen, ich denke, es macht Sinn, dass der Backend speichert das Datum und die Uhrzeit in UTC/GMT, auf diese Weise der Kundenzeitzone unabhängig ist, wenn es in gespeichert ist die DB. Es wäre also keine gute Übung, die Zeitzone des Tomcat-Servers so anzupassen, dass sie dem Host entspricht (das sollte eigentlich keine Rolle spielen).

Das Problem, das ich hatte, war das Front-End war mit Datum und Uhrzeit (UTC/GMT +1) und die Zeit wurde auf 00: 00h und wenn es das Back-End erreicht, wird das Datum und die Zeit in UTC/konvertiert GMT, die es 23:00 des vorherigen Tages macht. Die Persistenzschicht speicherte gerade das Datum, das falsch ist, da wir Daten verlieren (die Zeit) und wenn wir versuchen, diesen Datensatz aus der DB zu holen, erhalten wir das vorherige Datum ohne die Zeit, also ist es nicht das Ergebnis, das wir erwarten würden.

Ich hoffe, meine Erklärung macht Sinn