Datenbank einrichten und Dump in Dockerfile importieren
In einer Docker-Umgebung kommt es häufig zu Schwierigkeiten beim Konfigurieren von MySQL und beim Importieren von Datenbank-Dumps Der Build-Prozess. Um diese Probleme zu beheben, sollten Sie den folgenden Ansatz in Betracht ziehen:
Das offizielle MySQL Docker-Image enthält eine Funktion, die den Datenimport beim Start ermöglicht. Dadurch entfällt die Notwendigkeit einer manuellen Datenbankerstellung und Dump-Importschritte innerhalb der Docker-Datei. Um dies zu implementieren, erstellen Sie eine Datei „docker-compose.yml“ ähnlich der folgenden:
data: build: docker/data/. mysql: image: mysql ports: - "3307:3306" environment: MYSQL_ROOT_PASSWORD: 1234 volumes: - ./docker/data:/docker-entrypoint-initdb.d volumes_from: - data
In dieser Konfiguration sollte sich die Datei „data-dump.sql“ im Verzeichnis „docker/data“ befinden. Durch die Volume-Zuordnung wird es innerhalb des Containers unter /docker-entrypoint-initdb.d zugänglich gemacht.
Hinter den Kulissen enthält das Skript docker-entrypoint.sh im MySQL-Docker-Image einen Codeblock, der SQL automatisch ausführt Dateien gefunden in /docker-entrypoint-initdb.d:
for f in /docker-entrypoint-initdb.d/*; do case "$f" in *.sh) echo "<pre class="brush:php;toolbar:false">FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8 VOLUME /var/lib/mysql CMD ["true"]
Dadurch wird sichergestellt, dass die Datei data-dump.sql ausgeführt wird beim Container-Start.
Um die Datenpersistenz über Container-Neustarts und -Entfernungen hinweg aufrechtzuerhalten, wird empfohlen, einen separaten Datencontainer zu erstellen. Die Docker-Datei für einen solchen Container kann so einfach sein wie:
Der CMD-Befehl ["true"] wird verwendet, um zu verhindern, dass der Container beendet wird. Der Datencontainer muss sich nicht in einem gestarteten Zustand befinden, um die Datenpersistenz sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie importiert man Datenbank-Dumps effizient in MySQL in einer Docker-Umgebung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!