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
Susan Sarandonoriginal
2024-12-04 06:41:101030parcourir

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

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
  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
  1. Démarrez l'instance Docker MySQL en utilisant :
docker-compose build
docker-compose up

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!

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