Trick 17: Einfacher SQL-Import mit Docker
Hier ein schneller Tipp, der gerade im Zusammenhang mit Legacy-Applikationen helfen kann, bei denen man einen SQL-Dump beim Starten des MySQL-Containers auch gleich importiert haben möchte.
In meiner docker-compose.yml
nutze ich das offizielle MariaDB-Image. Mit dem MySQL-Image funktioniert das aber genauso. Man achte auf die letzte Zeile. Dort wird mittels Host-Mount ein SQL-Dump aus dem Projekt-Verzeichnis innerhalb des Containers, im Ordner /docker-entrypoint-initdb.d
, verfügbar gemacht.
version: "3.7"
services:
db:
image: mariadb:10.4
environment:
MYSQL_ROOT_PASSWORD: myrootpassword
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
ports:
- 3306:3306
volumes:
- ./sql/dump.sql:/docker-entrypoint-initdb.d/dump.sql
Mit docker-compose up
wird nun der Dienst gestartet und der SQL-Dump in die angegebene Datenbank importiert. Wer die Magie verstehen möchte, muss nur einen Blick in die als ENTRYPOINT
hinterlegte Datei docker-entrypoint.sh des Images werfen. Dort wird nämlich innerhalb des Ordners nach Dateien mit den Endungen .sh
, .sql
und .sql.gz
geschaut und diese ausgeführt, bzw. importiert. Möglich ist somit auch das Importieren mehrerer SQL-Dumps, indem man den gesamten Ordner mountet.
Bild von Ian Battaglia