[JAVA] Die Zeit ist falsch mit der Anwendung, die auf dem Docker-Container gestartet wurde

Einführung

Hallo, das ist @chan_kaku Dieses Mal trat ein Problem auf, als das interne Tool auf Docker konvertiert wurde. Daher werde ich das Problem, die diesmal ergriffenen Gegenmaßnahmen und die schwierigen Punkte vorstellen.

Problem

Diesmal hatte ich ein Problem mit einer Java-Anwendung. Das Problem war irgendwann der Prozess, die Zeit, die in der DB dauerhaft gemacht werden soll, auf die aktuelle Zeit mit "new Date ()" zu setzen. Bis jetzt habe ich Docker nicht verwendet und war abhängig von der Zeitzone des Host-Servers, sodass ich mir Zeit für JST nehmen konnte und daran nichts auszusetzen war. Nach der Konvertierung dieses Tools in Docker gab es jedoch das Problem, dass die aktuelle Uhrzeit an diesem "neuen Datum ()" verschoben wurde.

Errate die Ursache

Erstens wusste ich nicht viel über Docker und vermutete, dass es ein Problem mit dem Code auf der Java-Seite gab. Wie oben erwähnt, wurde die aktuelle Zeit jedoch als "neues Datum ()" angenommen, sodass diese Vermutung falsch war. Die nächste Vermutung war die Zeitzone des Hostservers. Als ich jedoch den Befehl "Datum" drückte, wurde er als "JST" angezeigt, sodass dies auch übersehen wurde. Ich habe keine möglichen Vermutungen mehr. Als ich Leute fragte, die mit Docker vertraut sind, erhielt ich die Information, dass in Docker einige Zeit zu sein scheint und dass diese Zeit möglicherweise nicht stimmt. Also habe ich Docker mit dem folgenden Befehl eingegeben und die Zeitzone im Docker-Container auf die gleiche Weise überprüft.

docker run -t -i (Docker-Zielbild)  /bin/Bash → Docker starten und hineingehen
# date

Hier war es "JST" wie zuvor.

Gegenmaßnahmen

Als ich beklagte, dass alle Maßnahmen hier erschöpft waren, sagte eine Stimme einer bestimmten Person ... "Sehen Sie sich den Inhalt von" / etc / timezone "in Docker ~ an." Ich glaubte an diese Person, ging in Docker und schaute auf "/ etc / timezone" und stellte fest, dass dies "UTC" war. Also habe ich die Docker-Datei so geändert, dass "/ etc / timezone" wie folgt zu "Asia / Tokyo" wird.

ENV TZ="Asia/Tokyo"
RUN echo $TZ > /etc/timezone

//Andere Beschreibungen als zeitzonenbezogene werden weggelassen

Der Grund, warum ich es dieses Mal mit Echo geändert habe, ist, dass die Zeitzone des Zeitsystems aufgrund der Anforderungen des Tools JST sein musste. Daher habe ich beschlossen, dass dies in der Docker-Datei beschrieben werden sollte.

Am Ende

Ich hatte es an verschiedenen Orten schwer, weil ich nicht viel über Docker wusste, aber ich bin froh, dass ich es vorerst gelöst habe! Wir warten auf Masakari, der sagt, dass diese Leute schlauer sind.

Recommended Posts

Die Zeit ist falsch mit der Anwendung, die auf dem Docker-Container gestartet wurde
[Docker] Erstellen, wenn der Quellcode auf dem Container gebunden ist
Aktualisieren Sie das Container-Image mit KUSANAGI Runs on Docker
Überwachen Sie den Docker-Container und den SystemD-Prozess auf demselben Host mit Zabbix unter Ubuntu.
Zeigen Sie die ROS-Anwendung auf Docker mit der GUI auf der Hostseite an
[Docker] Löschen Sie nur das Volume, das einem bestimmten Container zugeordnet ist
Mit Docker erstellte Webanwendung (1)
Jetzt ist es an der Zeit, mit der Stream-API zu beginnen
Auf Anforderung wird der Zugriff auf die Ressource beim Push mit Docker verweigert
Erstellen einer Entwicklungsumgebung für Ruby on Rails mit Docker + VSCode (Remote Container)
Programmieren mit Ruby (unterwegs)
WordPress mit Docker Compose unter CentOS 8
Führen Sie PureScript auf einem Docker-Container aus
[Linux] Starten Sie den Apache-Container mit Docker
Erstellen Sie eine Debug-Umgebung auf einem Container. Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials.
Beginnen Sie mit der Installation von Docker auf EC2 und dem Ausführen von Yellowfin in einem Container
Setzen Sie Zabbix mit Docker in Ubuntu ein und überwachen Sie Docker auf demselben Host
Probieren Sie Alfresco 6.0 unter Windows aus (Docker wird gleichzeitig eingeführt).
Starten Sie einen Docker-Container auf EC2 (persönliches Memorandum)
Führen Sie NordVPN im Docker (Windows) Ubuntu-Container aus
Die Geschichte der Aktualisierung des Docker-Containers von Sonar Qube
Schaben mit Puppenspieler in Nuxt auf Docker.
Wie die Website auf dem Bildschirm angezeigt wird
Kommunizieren Sie zwischen Gitlab und Gitlab Runner, die mit Docker gestartet wurden
[Docker] Starten Sie den Container so schnell wie möglich
Stellen Sie die Anwendung mit VPC + EC2 + Docker bereit.
Erstellen Sie eine Umgebung mit Docker unter AWS
Führen Sie Ubuntu + ROS mit Docker auf dem Mac aus
Erläuterung, bis der ursprüngliche Antrag abgeschlossen ist
Ein kurzer Hinweis zur Verwendung von jshell mit dem offiziellen Docker-Image des JDK
So lösen Sie, wenn Sie mit einem neuen Container keine Verbindung zur Datenbank herstellen können, weil der Port dem vorhandenen Docker-Container zugewiesen ist
So erstellen Sie einen Jenkins-Server mit einem Docker-Container unter CentOS 7 von VirtualBox und greifen von einem lokalen PC auf den Jenkins-Server zu