Maison > base de données > tutoriel mysql > le corps du texte

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

Barbara Streisand
Libérer: 2024-10-24 10:28:02
original
1121 Les gens l'ont consulté

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>
Copier après la connexion

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 .
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal