Maison >base de données >tutoriel mysql >Comment initialiser de manière fiable un schéma de base de données MySQL dans un conteneur Docker ?

Comment initialiser de manière fiable un schéma de base de données MySQL dans un conteneur Docker ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 03:54:13993parcourir

How to Reliably Initialize a MySQL Database Schema within a Docker Container?

Comment initialiser une base de données MySQL avec un schéma dans un conteneur Docker

L'initialisation d'une base de données MySQL avec un schéma dans un conteneur Docker est une tâche courante qui implique la création d'une base de données et y charger un schéma. Une approche pour ce faire consiste à utiliser un Dockerfile et la commande CMD pour exécuter un script qui initialise la base de données. Cependant, cette méthode peut rencontrer des difficultés, car la commande CMD ne peut exécuter qu'une seule commande et non une série de commandes.

Pour surmonter ce problème, une approche plus fiable consiste à utiliser la commande ADD pour ajouter la base de données. fichier de schéma dans le répertoire /docker-entrypoint-initdb.d. Lors de la création du conteneur, le script docker-entrypoint.sh exécute automatiquement tous les scripts SQL situés dans ce répertoire sur la base de données MySQL.

Dockerfile modifié :

FROM mysql:5.7.15

MAINTAINER me

ENV MYSQL_DATABASE=<schema_name> \
    MYSQL_ROOT_PASSWORD=<password>

ADD schema.sql /docker-entrypoint-initdb.d

EXPOSE 3306

Préparation du vidage du schéma :

Avant de commencer, assurez-vous d'avoir un vidage de votre MySQL schéma enregistré dans un fichier nommé schema.sql. Ceci peut être obtenu en utilisant la commande mysqldump :

mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql

Démarrage de l'instance Docker MySQL :

Une fois le fichier Docker modifié et le vidage du schéma préparé, vous pouvez démarrer l'instance Docker MySQL à l'aide de Docker Compose :

docker-compose build
docker-compose up

En suivant ces étapes, vous pouvez efficacement initialisez une base de données MySQL avec un schéma dans un conteneur Docker. Le répertoire docker-entrypoint-initdb.d garantit que le schéma est chargé lors de la création du conteneur, vous permettant d'avoir une base de données pré-remplie avec le schéma souhaité.

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