In einem Projekt müssen Sie häufig Umgebungsvariablen in der Datei docker-compose.yml verwenden, um unterschiedliche Bedingungen und Verwendungsszenarien zu steuern. Dieser Artikel konzentriert sich darauf, wie Docker Compose auf Umgebungsvariablen verweist. Hinweis: Die Demonstrationsumgebung dieses Artikels ist Ubuntu 16.04. Erstellen Sie CLI- und Umgebungsvariablen Die Compose CLI (Compose-Befehlszeile, d. h. das Docker-Compose-Programm) erkennt Umgebungsvariablen mit den Namen COMPOSE_PROJECT_NAME und COMPOSE_FILE (siehe hier für spezifische unterstützte Umgebungsvariablen). Beispielsweise können wir den Projektnamen und die Konfigurationsdatei für Docker-Compose über diese beiden Umgebungsvariablen angeben: $ export COMPOSE_PROJECT_NAME=TestVar $ export COMPOSE_FILE=~/projects/composecounter/docker-compose.yml Starten Sie dann die Anwendung. Die angezeigten Projektnamen sind diejenigen, die wir in den Umgebungsvariablen angegeben haben: Wenn Sie die Umgebungsvariable festlegen und gleichzeitig eine Befehlszeilenoption angeben, gilt die Einstellung der Befehlszeilenoption: $ docker-compose -p nickproject up -d Referenzieren von Umgebungsvariablen in der Compose-Datei Wir können in der Compose-Datei auch direkt auf Umgebungsvariablen verweisen, wie in der folgenden Demo: Version: '3' Leistungen: Webseite: Bild: ${IMAGETAG} Häfen: - "5000:5000" Redis: Bild: „redis:alpine“ Wir spezifizieren das Webbild über die Umgebungsvariable ${IMAGETAG}. Nun übergeben wir den Wert der Umgebungsvariable in der Compose-Konfigurationsdatei per Export: Beachten Sie: Wenn die entsprechende Umgebungsvariable nicht festgelegt ist, ersetzt compose sie durch eine leere Zeichenfolge: In diesem Fall können wir einen Standardwert für die Variable in der Compose-Konfigurationsdatei festlegen: Version: '3' Leistungen: Webseite: Bild: ${IMAGETAG:-defaultwebimage} Häfen: - "5000:5000" Redis: Bild: „redis:alpine“ Wenn die Variable IMAGETAG nicht festgelegt ist, wird das Standardwebbild angewendet: Zusätzlich zu dieser Methode können wir Standardwerte für Umgebungsvariablen auch über die später vorgestellte .env-Datei festlegen. Übergeben von Umgebungsvariablen an den Container Sehen wir uns zunächst an, wie Umgebungsvariablen für den Container in der Compose-Datei festgelegt werden: Webseite: Umfeld: DEBUG: 1 Der Umgebungsknoten in der Compose-Datei wird verwendet, um Umgebungsvariablen für den Container festzulegen. Das Obige entspricht: $ docker run -e DEBUG=1 Es ist auch sehr einfach, den Wert der aktuellen Shell-Umgebungsvariable an die Umgebungsvariable des Containers zu übergeben. Entfernen Sie einfach den Zuweisungsteil im obigen Code: Webseite: Umfeld: DEBUGGEN: In diesem Fall wird die Umgebungsvariable DEBUG, wenn sie nicht in die aktuelle Shell exportiert wird, in der Compose-Datei als null interpretiert: Beim Versuch, die Umgebungsvariable DEBUG zu exportieren: $ export DEBUG=1 Dies ist das richtige Nutzungsszenario, das wir entworfen haben! Verwenden von Dateien zum Festlegen mehrerer Umgebungsvariablen für einen Container Wenn Sie meinen, dass das Festlegen von Umgebungsvariablen für den Container über die Umgebung nicht aufregend genug ist, können wir Umgebungsvariablen für den Container auch über Dateien wie den Parameter --env-file von docker-run festlegen: Webseite: Umgebungsdatei: -web-variables.env Beachten Sie, dass der Pfad zur Datei web-variables.env relativ zur Datei docker-compose.yml ist. Der obige Code hat dieselbe Wirkung wie der folgende Code: $ docker run --env-file=web-variables.env In der Datei web-variables.env können eine oder mehrere Umgebungsvariablen definiert werden: #Web-Container-Umgebung definieren APPNAME=hallowelt AUTOR=Nick Li VERSION=1.0 Überprüfen Sie die Ergebnisse: Es stellt sich heraus, dass Compose die env_file-Einstellungen in die Umgebung übersetzt! .env-Datei Wenn wir in der Datei docker-compose.yml auf eine große Anzahl von Umgebungsvariablen verweisen, ist das Festlegen von Standardwerten für jede Umgebungsvariable mühsam und beeinträchtigt auch die Einfachheit von docker-compose.yml. An diesem Punkt können wir die .env-Datei verwenden, um Standardwerte für alle Umgebungsvariablen festzulegen, auf die in der Datei docker-compose.yml verwiesen wird! Version: '3' Leistungen: Webseite: Bild: ${IMAGETAG} Umfeld: APPNAME: AUTOR: VERSION: Häfen: - "5000:5000" Redis: Bild: „redis:alpine“ Erstellen Sie dann eine .env-Datei im selben Verzeichnis und bearbeiten Sie deren Inhalt wie folgt: # Standardwert der Umgebungsvariable definieren. IMAGETAG=Standardwebbild APPNAME=Standard-App-Name AUTHOR=Standard-Autorenname VERSION=Standardversion ist 1.0 Überprüfen Sie die Ergebnisse. Alle Umgebungsvariablen werden jetzt mit den in der .env-Datei definierten Standardwerten angezeigt: Konfigurieren Sie Umgebungsvariablen für verschiedene Szenarien Wie wir im vorherigen Abschnitt sehen können, bietet Docker Compose genügend Flexibilität, um die in der Datei docker-compose.yml referenzierten Umgebungsvariablen festzulegen. Ihre Prioritäten sind wie folgt:
Erstens hat der direkt in der Datei docker-compose.yml festgelegte Wert die höchste Priorität. Gemäß der obigen Prioritätsdefinition können wir die Umgebungsvariablen für verschiedene Szenarien in verschiedenen Shell-Skripten definieren und exportieren. Führen Sie dann vor der Ausführung des Befehls „docker-compose“ den Quellbefehl aus, um die im Shell-Skript definierten Umgebungsvariablen in die aktuelle Shell zu exportieren. Auf diese Weise können Sie die Anzahl der Stellen reduzieren, an denen Umgebungsvariablen verwaltet werden müssen. Im folgenden Beispiel erstellen wir test.sh und prod.sh in dem Verzeichnis, in dem sich die Datei docker-compose.yml befindet. Der Inhalt von test.sh ist wie folgt: #!/bin/bash # Standardwert der Umgebungsvariable definieren. exportiere IMAGETAG=web:v1 export APPNAME=HalloWelt export AUTOR=Nick Li export VERSION=1.0 Der Inhalt von prod.sh ist wie folgt: #!/bin/bash # Standardwert der Umgebungsvariable definieren. exportiere IMAGETAG=webpord:v1 export APPNAME=HelloWorldProd export AUTOR=Nick Li export VERSION=1.0LTS Führen Sie in der Testumgebung den folgenden Befehl aus: $ Quelle test.sh $ Docker-Compose-Konfiguration Zu diesem Zeitpunkt wenden die Umgebungsvariablen in docker-compose.yml Einstellungen an, die sich auf die Testumgebung beziehen. Führen Sie in einer Produktionsumgebung den folgenden Befehl aus: $ Quelle prod.sh $ Docker-Compose-Konfiguration Zu diesem Zeitpunkt wenden die Umgebungsvariablen in docker-compose.yml Einstellungen an, die sich auf die Produktionsumgebung beziehen. Zusammenfassen Docker Compose bietet umfassende Unterstützung und flexible Nutzung von Umgebungsvariablen. Ich hoffe, dass die Zusammenfassung in diesem Artikel Ihnen dabei helfen kann, die relevante Verwendung zu klären und auf prägnante Weise Unterstützung für verschiedene Verwendungsszenarien zu bieten. siehe: Erstellen Sie CLI-Umgebungsvariablen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Wie funktionieren die dynamischen Komponenten von Vue3?
Ich habe Vue.js verwendet, um ein Bildanzeigemodu...
Inhaltsverzeichnis 1. Problembeschreibung: 2. Feh...
1. Tabellenstruktur 2. Tabellendaten 3. Das Abfra...
Vorwort In diesem Artikel wird das Installationst...
Zwang Einschränkungen gewährleisten Datenintegrit...
Dieser Artikel fasst gängige Betriebstechniken fü...
Inhaltsverzeichnis 1. Installieren Sie Docker auf...
Inhaltsverzeichnis DOM Knoten Elementknoten: Text...
Vorwort Normalerweise wird für MySQL-Abfragen mit...
Inhaltsverzeichnis Erstellen von OAuth-Apps Holen...
Voraussetzung: Celery wird in Django eingeführt. ...
Wirkungsdiagramm: Gesamtwirkung: Video wird gelad...
Dieser Artikel fasst die Prinzipien und die Verwe...
In diesem Artikelbeispiel wird der spezifische Co...
Alibaba Cloud Server installiert und konfiguriert...