Dockerfile: Nahtloses MySQL-Setup und Datenimport
Das Einrichten von MySQL und das Importieren von Daten während der Dockerfile-Builds kann entmutigend sein, ist es aber nicht muss sein. Beheben wir einen häufigen Fehler, mit dem Entwickler konfrontiert werden, wenn sie das bereitgestellte Dockerfile-Code-Snippet verwenden:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Der Schlüssel zur Lösung dieses Problems liegt im Verständnis der Funktionsweise des offiziellen MySQL-Docker-Images. In seiner neuesten Version führt das Image eine Funktion ein, die den Datenimport während des Startvorgangs ermöglicht. Um diese Funktion zu nutzen, können Sie Ihre Docker-Datei wie folgt ändern:
# Mount the data volume for persistent MySQL data storage VOLUME ["/etc/mysql", "/var/lib/mysql"] # Import database dump during Docker image build ADD dump.sql /tmp/dump.sql RUN mysql -u root -e "CREATE DATABASE mydb" RUN mysql -u root mydb < /tmp/dump.sql # Start MySQL daemon CMD ["mysqld"]
Durch Hinzufügen der CMD-Zeile ["mysqld"] am Ende startet Ihr Docker-Image automatisch den MySQL-Daemon bei der Containererstellung, was dies ermöglicht für den Datenimport während des Erstellungsprozesses.
Zusätzliche Überlegungen
Wenn Sie eine Persistenz Ihrer Daten wünschen MySQL-Daten auch dann, wenn der Container gestoppt oder entfernt wird. Erwägen Sie die Erstellung eines separaten Datencontainers mit einer Docker-Datei ähnlich der folgenden:
FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8 VOLUME /var/lib/mysql CMD ["true"]
Dieser Datencontainer stellt sicher, dass Ihre MySQL-Daten auch dann erhalten bleiben, wenn der Haupt-MySQL Der Container wird nicht ausgeführt.
Zusammenfassend lässt sich sagen, dass Sie MySQL einrichten und Daten nahtlos in Ihre Docker-Datei importieren können, indem Sie die Datenimportfunktion des offiziellen MySQL-Docker-Images nutzen und einen separaten Datencontainer für die Persistenz verwenden baut.
Das obige ist der detaillierte Inhalt vonWie kann ich MySQL nahtlos einrichten und Daten in meinen Dockerfile-Build importieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!