Validation des données dans un conteneur MySQL
Vous avez rencontré un problème en essayant de conserver les modifications de la base de données en validant un conteneur MySQL modifié dans un nouveau image. Malgré l'importation d'un dump SQL et la création d'une nouvelle base de données, lors de l'exécution d'un conteneur basé sur l'image mise à jour, les modifications ne sont pas reflétées dans la base de données.
Cause :
L'image MySQL officielle utilise un volume pour stocker les données, garantissant ainsi leur préservation au-delà de la durée de vie du conteneur. Cependant, lors de la validation d'un conteneur avec des volumes, les modifications de données ne sont pas incluses dans l'image résultante.
Solution :
Pour corriger ce problème, créez votre propre MySQL personnalisé image de base qui omet l’utilisation de volumes. Ce faisant, les données ajoutées lors du processus de validation seront intégrées dans l'image. Notez que cette approche s'accompagne d'une mise en garde : les ajouts de données ultérieurs aux conteneurs générés à partir de l'image validée seront perdus à la fin du conteneur.
Dockerfile modifié :
Le Dockerfile suivant montre comment créer une image de base MySQL personnalisée sans volumes :
<code class="dockerfile">FROM mysql:latest # Remove volume mounts RUN rm -rf /var/lib/mysql/*</code>
Création et validation de l'image :
Créez l'image de base personnalisée à l'aide du Dockerfile modifié :
docker build -t my-custom-mysql .
Créez un nouveau conteneur basé sur l'image personnalisée et importez le dump SQL :
docker run --name my-custom-mysql -d my-custom-mysql docker exec -it my-custom-mysql bash mysql -uroot -psecret -e 'create database liferay_psat1;' mysql -uroot -psecret liferay_psat1 < /mnt/liferay_sql_dump.sql
Commitez le conteneur en tant que nouvelle image, incorporant les données importées :
docker commit -m "Imported liferay SQL dump" <container-id> jihedamine/mysql-psat1:v2
Vérification des modifications :
Exécutez un conteneur en utilisant l'image mise à jour et vérifiez le contenu de la base de données :
docker run -ti jihedamine/mysql-psat1:v2 bash mysql -uroot -psecret # show databases;
La base de données 'liferay_psat1' devrait maintenant être présent, reflétant les changements que vous avez apportés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!