Maison >base de données >tutoriel mysql >Comment initialiser une base de données MySQL avec un schéma prédéfini dans un conteneur Docker ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 06:39:07307parcourir

How to Initialize a MySQL Database with a Predefined Schema in a Docker Container?

Initialisation d'une base de données MySQL avec un schéma dans Docker

Problème

Les utilisateurs de Docker rencontrent des difficultés lors de l'initialisation une base de données MySQL avec un schéma prédéfini utilisant un Dockerfile. Malgré les directives de documentation suivantes, la commande CMD destinée à exécuter le script de schéma échoue, empêchant la création réussie du conteneur.

Solution

La solution implique une approche séquentielle :

  1. Vider le schéma MySQL dans un fichier :
    Exporter la base de données schéma dans un fichier à l'aide de la commande mysqldump.
  2. AJOUTER un fichier de schéma au conteneur Docker :
    Dans le fichier Docker, utilisez la commande ADD pour copier le fichier schema.sql dans le fichier /docker -répertoire Entrypoint-initdb.d. Ce répertoire permet l'exécution automatique de scripts lors de l'initialisation de la base de données.
  3. Démarrez l'instance Docker MySQL :
    Initiez le conteneur Docker à l'aide de l'image MySQL spécifiée et du fichier Docker mis à jour.

Exemple Dockerfile :

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

Notes supplémentaires :

  • Le script docker-entrypoint.sh exécutera automatiquement tous les fichiers avec un ".sql" extension dans le répertoire /docker-entrypoint-initdb.d.
  • Cette méthode permet d'initialiser une base de données MySQL avec un schéma lors de la création du conteneur, éliminant ainsi le besoin d'intervention manuelle.

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