Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Seeding einer MySQL-DB für eine dockerisierte Django-App

MySQL (und Varianten wie Percona Server) bieten eine Möglichkeit zum Seeding einer Datenbank beim ersten Containerstart, die im Abschnitt „Initialisieren einer neuen Instanz“ in Docker-Hub-Seite .

Ein Dockerfile, das diese Technik verwendet, sieht folgendermaßen aus

FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/

Hinweis:Der abschließende Schrägstrich des Verzeichnisses ist wichtig.

Wenn Sie docker run dieses Bild erstellt Docker den Container, den docker -entrypoint.sh führt das SQL-Skript aus, und dann ist der Container bereit, Daten bereitzustellen.

Die Daten bleiben auch nach Neustarts des Containers bestehen – die Seed-Daten und nachfolgende Änderungen.

Sie können den Container für schnellere Startzeiten wiederverwenden – bei nachfolgenden Containerstarts muss die Datenbank nicht initialisiert oder die Daten gesät werden. Wenn Sie unverfälschte Daten benötigen, löschen Sie den Container und docker run das Bild erneut.

Denken Sie beim Löschen des Containers daran, das Docker-Volume mit den Datenbankdaten zu löschen:docker rm -v $CONTAINER_NAME .

Ich verwende diese Methode, um Standarddaten bereitzustellen für Sprach-/Framework-POCs sowie CI/CD. Das Initialisieren einer neuen Datenbank und das Seeding großer Datenmengen kann einige Minuten dauern, daher sollten Sie einige Logik benötigen, um automatisierte Vorgänge anzuhalten, bis Sie erfolgreich eine DB-Verbindung herstellen können.

Hoffe, das hilft dir auf deinem Weg.