Maison >base de données >tutoriel mysql >Comment importer efficacement des sauvegardes de base de données dans MySQL dans un environnement Docker ?

Comment importer efficacement des sauvegardes de base de données dans MySQL dans un environnement Docker ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 15:14:12822parcourir

How to Efficiently Import Database Dumps into MySQL within a Docker Environment?

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!

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