[JAVA] Docker-compose ~ piège de volume ~

introduction

Ceci est le premier message. Je m'appelle les légumes chinois. Je suis un étudiant qui n'a pas de passe-temps en programmation. Pendant que j'écrivais le code l'autre jour, j'étais accro à un pot profond, et je n'ai trouvé aucune information connexe même après avoir cherché diverses choses, donc je vais le poster.

Qu'est-il arrivé

J'utilise Windows, et quand j'ai appris que wsl2 a été officiellement introduit, j'ai décidé de lancer Docker-desktop sur wsl2. Après avoir préparé l'environnement et joué pendant environ un mois, j'ai pu entrer en contact avec différentes langues sans polluer l'environnement de mon PC, et j'ai trouvé qu'il faisait extrêmement chaud. J'ai utilisé le développement à distance de vscode pour me connecter au conteneur lancé par docker, puis modifié et débogué le code à l'intérieur du conteneur.

Mais des problèmes surviennent

C'est au bout d'une journée que j'écrivais du code sous le Rashomon en attendant la pluie. J'ai entendu dire que quelque chose comme Springboot est vraiment cool, alors je l'ai essayé. J'ai implémenté à la légère certains des didacticiels japonais officiels et je peux maintenant écrire les bases de Spring MVC sans aucune mise en conserve. Maintenant que je suis sur la bonne voie, j'ai décidé d'essayer le traitement de base de données en coopération avec MySQL, et j'ai créé un environnement avec docker. En particulier,

J'en ai fait trois comme un seul réseau avec docker-compose. Je voulais aussi sauvegarder le code que j'ai écrit, j'ai donc monté un répertoire textuel avec un volume sur le conteneur java. Cependant, lorsque j'essaie d'écrire le code, cela ne fonctionne pas bien avec la base de données. Il crache une erreur de connexion à la base de données à chaque fois qu'il est débogué. Le code lui-même est presque une copie du tutoriel, il ne peut donc pas être bloqué ... N'est-ce pas dû au docker, pas au code?

Symptômes

En plus de ce qui précède, des symptômes similaires se sont produits dans d'autres conteneurs. Voici une liste d'entre eux.

Ce qu'ils ont en commun, c'est que ** l'édition / la création de fichiers n'est pas reflétée **.

Solution

Après beaucoup d'expérimentation, je suis arrivé à la conclusion qu'il y avait un problème avec le vloume de docker. Lorsqu'un fichier sur Windows est spécifié comme volume, il semble que les modifications du fichier en volume ne soient pas reflétées en temps réel. C'est donc une solution que vous devez spécifier le volume, mais si vous souhaitez enregistrer le code de manière permanente, il est difficile de le copier dans les fenêtres une par une.   Il existe une solution lors de l'utilisation du volume. En premier lieu, docker for windows official a la description suivante.

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.

** "Les fichiers de montage de volume doivent être placés sous Linux, pas sous Windows!" **

······Je suis désolé. J'en ai eu un aperçu, mais le support lui-même a bien fonctionné, et ça va sous Windows, non? Je pensais. Je n'ai jamais pensé qu'un problème aussi étrange se produirait.

Donc, je l'ai résolu en montant le répertoire créé sur Linux de wsl2 et en recréant l'environnement React. Le début du fil est maintenant de 20 secondes, et chaque fois que je change de code, cela se reflète. Réagissez peut-être.

À la fin

En conclusion, je pense qu'il vaut mieux créer un répertoire à monter avec volume sous Linux. Il ne fait aucun doute que les gens qui le développent le disent. J'étais mal quand j'essayais de le faire à ma manière. Je suis désolé···. Vous devez lire attentivement le document officiel.

Recommended Posts

Docker-compose ~ piège de volume ~
remplacer le piège
Commande docker-compose