Maison  >  Article  >  base de données  >  Comment valider les modifications de données dans un conteneur MySQL sans utiliser de volumes ?

Comment valider les modifications de données dans un conteneur MySQL sans utiliser de volumes ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-24 10:28:021006parcourir

How to Commit Data Changes in a MySQL Container Without Using Volumes?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn