Wenn wir mit Docker einen MySQL-Container erstellen, erwarten wir manchmal, dass die Datenbank und die Tabelle automatisch erstellt werden und die Initialisierungsdaten nach dem Start des Containers automatisch eingegeben werden. Das heißt, nach dem Start des Containers können wir direkt eine Verbindung zur Datenbank im Container herstellen und die darin enthaltenen Daten verwenden. Tatsächlich unterstützt das offizielle Image von MySQL diese Funktion und führt das angegebene SQL-Skript oder Shell-Skript automatisch aus, wenn der Container gestartet wird. Werfen wir einen Blick auf die Docker-Datei des offiziellen Images von MySQL, wie unten dargestellt: ENTRYPOINT wurde gesetzt, wodurch das Skript Nachdem wir nun das Prinzip verstanden haben, wollen wir es in die Praxis umsetzen: Wenn Sie eine Disconf-Umgebung auf Docker erstellen, müssen Sie eine MySQL-Datenbank erstellen und nacheinander vier SQL-Dateien ausführen, um die Datenbank, die Tabelle und die Daten zu initialisieren. Dazu gibt es zwei Möglichkeiten:
#!/bin/bash mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF Quelle $WORK_PATH/$FILE_0; Quelle $WORK_PATH/$FILE_1; Quelle $WORK_PATH/$FILE_2; Quelle $WORK_PATH/$FILE_3; Es ist ersichtlich, dass die Shell sehr einfach ist. Melden Sie sich bei MySQL an und führen Sie die angegebene SQL-Datei aus. MYSQL_ROOT_PASSWORD, WORK_PATH, FILE_0 sind alle Umgebungsvariablen. Schauen wir uns an, wie die entsprechende Docker-Datei wie folgt geschrieben wird: # Docker-Image von disconf mysql # VERSION 0.0.1 # Autor: bolingcavalry #Das Basisimage verwendet daocloud.io/library/mysql:8 VON daocloud.io/library/mysql:8 #Autor MAINTAINER BolingCavalry <[email protected]> #Definieren Sie das Arbeitsverzeichnis ENV WORK_PATH /usr/local/work #Definieren Sie das Verzeichnis, das automatisch vom Container ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d ausgeführt wird #Definieren Sie den SQL-Dateinamen ENV FILE_0 0-init_table.sql ENV DATEI_1 1-init_data.sql ENV FILE_2 20151225.sql ENV FILE_3 20160701.sql #Definieren Sie den Shell-Dateinamen ENV INSTALL_DATA_SHELL install_data.sh #Erstellen Sie einen Ordner RUN mkdir -p $WORK_PATH #Kopieren Sie die Initialisierungsdatendatei der Datenbank in das Arbeitsverzeichnis COPY ./$FILE_0 $WORK_PATH/ KOPIEREN ./$FILE_1 $WORK_PATH/ KOPIEREN ./$FILE_2 $WORK_PATH/ KOPIEREN ./$FILE_3 $WORK_PATH/ #Legen Sie die auszuführende Shell-Datei in das Verzeichnis /docker-entrypoint-initdb.d/, und der Container führt diese Shell automatisch aus KOPIEREN ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/ #Fügen Sie der ausführbaren Datei Ausführungsberechtigungen hinzu RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL 0-init_table.sql, 1-init_data.sql, 20151225.sql, 20160701.sql sind die SQL-Dateien, die wir ausführen möchten und die beim Erstellen des Docker-Images in die Image-Datei kopiert werden. Bitte klonen Sie mein GitHub für den vollständigen Inhalt: Führen Sie dann Gehen wir zur Datenbank, um zu prüfen, ob die Daten wirklich da sind. Führen Sie Nach der Ausführung Wie Sie sehen, können Vorgänge wie Zusammenfassen Oben habe ich Ihnen gezeigt, wie Sie SQL-Anweisungen automatisch ausführen, wenn MySQL in Docker gestartet wird. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der Front-End-Sicherheit: JavaScript-Anti-HTTP-Hijacking und XSS
>>: Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls
Inhaltsverzeichnis 1. Öffnen Sie das Projektverze...
Inhaltsverzeichnis 1. Erstellen Sie eine SQL-Skri...
Vorwort Wir haben vielleicht schon vom Konzept de...
Erhalten Sie tägliche Statistiken Wenn Sie ein Pr...
Beim Erstellen einer Website scheint die HTML-Spra...
Die Voraussetzungen sind wie folgt: Unter dem Dom...
(1) Experimentelle Umgebung youxi1 192.168.5.101 ...
ylbtech_html_drucken HTML-Druckcode, unterstützt S...
Wenn Sie das Breitenattribut direkt auf den Stil d...
Inhaltsverzeichnis 1. Was ist ein Entwurfsmuster?...
Einführung In diesem Artikel wird beschrieben, wi...
Tab-Auswahlkarten werden auf echten Webseiten seh...
undefined Wenn wir in JavaScript feststellen möch...
Inhaltsverzeichnis 1. Übersicht 1.1 Was ist ein P...
Vorwort Heute werde ich Ihnen ein Holy-Grail-Layo...