[JAVA] Docker-Compose ~ Volume Trap ~

Einführung

Dies ist der erste Beitrag. Ich heiße chinesisches Gemüse. Ich bin ein Student, der kein Hobby im Programmieren hat. Während ich neulich den Code schrieb, war ich süchtig nach einem tiefen Topf und habe auch nach der Suche nach verschiedenen Dingen keine verwandten Informationen gefunden, also werde ich sie veröffentlichen.

Was ist passiert

Ich verwende Windows und als ich hörte, dass wsl2 offiziell eingeführt wurde, entschied ich mich, Docker-desktop auf wsl2 auszuführen. Nachdem ich die Umgebung vorbereitet und ungefähr einen Monat lang gespielt hatte, konnte ich mit verschiedenen Sprachen in Kontakt kommen, ohne die Umgebung meines PCs zu verschmutzen, und ich fand es extrem heiß. Ich habe die Remote-Entwicklung von vscode verwendet, um eine Verbindung zu dem von Docker gestarteten Container herzustellen, und den Code im Container bearbeitet und debuggt.

Es treten jedoch Probleme auf

Es war am Ende eines Tages, als ich Code unter dem Rashomon schrieb, während ich auf den Regen wartete. Ich habe gehört, dass so etwas wie Springboot wirklich cool ist, also habe ich es versucht. Ich habe einige der offiziellen japanischen Tutorials leichtfertig implementiert, und jetzt kann ich die Grundlagen von Spring MVC ohne Konserven schreiben. Jetzt, da ich auf dem richtigen Weg bin, habe ich beschlossen, die Datenbankverarbeitung in Zusammenarbeit mit MySQL zu versuchen, und eine Umgebung mit Docker erstellt. Speziell,

Ich habe drei davon als ein Netzwerk mit Docker-Compose erstellt. Ich wollte auch den Code speichern, den ich geschrieben habe, also habe ich ein Textverzeichnis mit Volume auf dem Java-Container bereitgestellt. Wenn ich jedoch versuche, den Code zu schreiben, funktioniert er nicht gut mit der Datenbank. Bei jedem Debugging wird ein Datenbankverbindungsfehler ausgegeben. Der Code selbst ist fast eine Kopie des Tutorials, kann also nicht hängen bleiben ... Liegt das nicht am Docker, nicht am Code?

Symptome

Zusätzlich zu den oben genannten traten ähnliche Symptome in anderen Behältern auf. Unten ist eine Liste von ihnen.

Gemeinsam ist ihnen, dass ** das Bearbeiten / Erstellen von Dateien nicht berücksichtigt wird **.

Lösung

Nach vielen Experimenten kam ich zu dem Schluss, dass es ein Problem mit dem Docker-Vloume gab. Wenn eine Datei unter Windows als Volume angegeben wird, werden Änderungen an der Volume-Datei anscheinend nicht in Echtzeit angezeigt. Es ist also eine Lösung, bei der Sie das Volume angeben müssen. Wenn Sie den Code jedoch dauerhaft speichern möchten, ist es schwierig, ihn einzeln in Windows zu kopieren.   Bei der Verwendung von Volumen gibt es eine Lösung. Erstens hat Docker für Windows Official die folgende Beschreibung.

Store source code and other data that is bind-mounted into Linux containers (i.e., with docker run -v :) in the Linux filesystem, rather than the Windows filesystem.

** "Volume-Mount-Dateien sollten unter Linux und nicht unter Windows abgelegt werden!" **

······Es tut mir Leid. Ich hatte einen Blick darauf, aber das Mount selbst hat gut funktioniert und es ist unter Windows in Ordnung, oder? Ich dachte. Ich hätte nie gedacht, dass so ein seltsames Problem auftreten würde.

Also habe ich es gelöst, indem ich das unter Linux von wsl2 erstellte Verzeichnis gemountet und die React-Umgebung neu erstellt habe. Der Garnstart beträgt jetzt 20 Sekunden und jedes Mal, wenn ich den Code ändere, wird er wiedergegeben. Vielleicht reagieren.

Am Ende

Zusammenfassend denke ich, dass es besser ist, ein Verzeichnis zu erstellen, das unter Linux mit Volume gemountet werden soll. Es besteht kein Zweifel, dass die Leute, die es entwickeln, es sagen. Ich war schlecht, als ich versuchte, es auf meine eigene Weise zu tun. Es tut mir Leid···. Sie müssen das offizielle Dokument sorgfältig lesen.

Recommended Posts

Docker-Compose ~ Volume Trap ~
Falle ersetzen
Befehl docker-compose