Lors de la tentative d'importation d'un dump SQL dans un conteneur MySQL et de validation ultérieure du conteneur en tant que nouvelle image, les utilisateurs peuvent rencontrer le problème de la base de données ne conservant pas les données nouvellement créées lors du démarrage d'un conteneur avec la nouvelle image. Cet article étudie la cause première et propose une solution pour résoudre ce problème.
L'image officielle MySQL Docker stocke les données dans un volume. Il s'agit d'une configuration souhaitable pour garantir la persistance des données au-delà de la durée de vie du conteneur. Cependant, les volumes de données contournent le système de fichiers Union et ne sont pas inclus dans le processus de validation d'image. Par conséquent, les données ajoutées à la base de données pendant l'exécution du conteneur ne seront pas reflétées dans l'image validée.
Pour surmonter cette limitation et valider les données nouvellement ajoutées, les utilisateurs peuvent créer leur propre base MySQL image sans volumes de données. Cela implique de créer une image personnalisée qui inclut les logiciels et la configuration nécessaires, mais exclut tout point de montage de volume.
FROM mysql:latest RUN apt-get update && apt-get install -y mysql-client
mysql -uroot -psecret -e 'create database <database_name>;' mysql -uroot -psecret <database_name> < /mnt/<sql_dump_file>.sql
docker commit -m "Imported <database_name> SQL dump" <container_id> <new_image_name>:<version>
En créant une image de base MySQL personnalisée sans volumes, les utilisateurs ont la possibilité de :
Il est important de noter que les données ajoutées à un conteneur en cours d'exécution après la validation sera perdu lorsque le conteneur cessera d'exister. En effet, les données ne sont plus stockées dans un volume persistant mais plutôt dans le système de fichiers éphémères du conteneur.
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!