Maison >base de données >tutoriel mysql >Comment importer efficacement des sauvegardes de base de données dans MySQL dans un environnement Docker ?
Configuration de la base de données et importation des dumps dans Dockerfile
Dans un environnement Docker, il est courant de rencontrer des difficultés lors de la configuration de MySQL et de l'importation des dumps de base de données pendant le processus de construction. Pour résoudre ces problèmes, envisagez l'approche suivante :
L'image officielle MySQL Docker inclut une fonctionnalité qui permet l'importation de données au démarrage. Cela élimine le besoin de création manuelle de base de données et d’étapes d’importation de vidage dans le Dockerfile. Pour implémenter cela, créez un fichier docker-compose.yml similaire à :
data: build: docker/data/. mysql: image: mysql ports: - "3307:3306" environment: MYSQL_ROOT_PASSWORD: 1234 volumes: - ./docker/data:/docker-entrypoint-initdb.d volumes_from: - data
Dans cette configuration, le fichier data-dump.sql doit être situé dans le répertoire docker/data. Le mappage de volume le rendra accessible dans le conteneur à l'adresse /docker-entrypoint-initdb.d.
En coulisses, le script docker-entrypoint.sh dans l'image MySQL Docker inclut un bloc de code qui exécute automatiquement SQL. fichiers trouvés dans /docker-entrypoint-initdb.d :
for f in /docker-entrypoint-initdb.d/*; do case "$f" in *.sh) echo "<pre class="brush:php;toolbar:false">FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8 VOLUME /var/lib/mysql CMD ["true"]: running $f"; . "$f" ;; *.sql) echo ": running $f"; "${mysql[@]}" < "$f" && echo ;; *) echo ": ignoring $f" ;; esac echo done
Cela garantit que le fichier data-dump.sql est exécuté au niveau du conteneur démarrage.
Pour maintenir la persistance des données lors des redémarrages et des suppressions de conteneurs, il est recommandé de créer un conteneur de données distinct. Le Dockerfile pour un tel conteneur peut être aussi simple que :
La commande CMD ["true"] est utilisée pour empêcher la fermeture du conteneur. Le conteneur de données n'a pas besoin d'être dans un état démarré pour garantir la persistance des données.
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!