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.sqlMit 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