Das Initialisieren einer MySQL-Datenbank mit einem Schema in einem Docker-Container ist eine häufige Aufgabe, die das Erstellen einer Datenbank umfasst und ein Schema hinein laden. Ein Ansatz hierfür ist die Verwendung einer Docker-Datei und des CMD-Befehls zur Ausführung eines Skripts, das die Datenbank initialisiert. Diese Methode kann jedoch auf Schwierigkeiten stoßen, da der CMD-Befehl nur einen einzelnen Befehl und nicht eine Reihe von Befehlen ausführen kann.
Um dieses Problem zu lösen, besteht ein zuverlässigerer Ansatz darin, den ADD-Befehl zum Hinzufügen der Datenbank zu verwenden Schemadatei in das Verzeichnis /docker-entrypoint-initdb.d. Bei der Containererstellung führt das Skript docker-entrypoint.sh automatisch alle in diesem Verzeichnis befindlichen SQL-Skripte für die MySQL-Datenbank aus.
Geänderte Docker-Datei:
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
Vorbereiten des Schema-Dumps:
Bevor Sie beginnen, stellen Sie sicher, dass Sie über einen Dump Ihres MySQL verfügen Schema in einer Datei mit dem Namen schema.sql gespeichert. Dies kann mit dem Befehl mysqldump erreicht werden:
mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql
Starten der Docker-MySQL-Instanz:
Sobald die Docker-Datei geändert und der Schema-Dump vorbereitet ist, können Sie Sie können die Docker-MySQL-Instanz mit Docker Compose starten:
docker-compose build docker-compose up
Indem Sie diese Schritte befolgen, können Sie dies effektiv tun Initialisieren Sie eine MySQL-Datenbank mit einem Schema in einem Docker-Container. Das Verzeichnis „docker-entrypoint-initdb.d“ stellt sicher, dass das Schema während der Containererstellung geladen wird, sodass Sie über eine vorab aufgefüllte Datenbank mit dem gewünschten Schema verfügen.
Das obige ist der detaillierte Inhalt vonWie kann ich ein MySQL-Datenbankschema zuverlässig in einem Docker-Container initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!