Maison > base de données > tutoriel mysql > Comment initialiser avec succès un schéma de base de données MySQL dans un conteneur Docker ?

Comment initialiser avec succès un schéma de base de données MySQL dans un conteneur Docker ?

Susan Sarandon
Libérer: 2024-12-04 06:41:10
original
1026 Les gens l'ont consulté

How to Successfully 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 avec un schéma peut être un processus complexe, en particulier lors de l'utilisation d'un conteneur Docker. Cet article aborde un problème courant rencontré lors de l'initialisation d'une base de données MySQL avec un schéma à l'aide d'un conteneur Docker et fournit une solution basée sur le transfert du schéma dans un fichier et son ajout au répertoire /docker-entrypoint-initdb.d.

Description du problème

Lorsque vous essayez de créer un conteneur Docker avec une base de données MySQL et de l'initialiser avec un schéma en utilisant ce qui suit Dockerfile :

FROM mysql
MAINTAINER (me) <email>

# Copy the database schema to the /data directory
COPY files/epcis_schema.sql /data/epcis_schema.sql

# Change the working directory
WORKDIR data

CMD mysql -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE < epcis_schema.sql
Copier après la connexion

Le conteneur ne démarre pas et la commande CMD n'est pas exécutée avec succès.

Solution

Pour initialiser la base de données avec le schéma, suivez ces étapes :

  1. Dumper le schéma MySQL dans un fichier using :
mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql
Copier après la connexion
  1. Ajoutez le fichier de schéma au répertoire /docker-entrypoint-initdb.d dans le 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
Copier après la connexion
  1. Démarrez l'instance Docker MySQL en utilisant :
docker-compose build
docker-compose up
Copier après la connexion

En utilisant le /docker-entrypoint-initdb.d, le fichier SQL sera automatiquement exécuté sur la base de données MySQL lors de l'initialisation du conteneur, garantissant que la base de données est initialisée 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal