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.
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.
Pour initialiser la base de données avec le schéma, suivez ces étapes :
mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql
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
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!