Beispiel zum Referenzieren von Umgebungsvariablen in Docker Compose

Beispiel zum Referenzieren von Umgebungsvariablen in Docker Compose

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!
Ändern Sie den Inhalt der Datei docker-compose.yml wie folgt:

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:

  1. Datei erstellen
  2. Shell-Umgebungsvariablen
  3. Umgebungsdatei
  4. Docker-Datei
  5. Variable ist nicht definiert

Erstens hat der direkt in der Datei docker-compose.yml festgelegte Wert die höchste Priorität.
Anschließend wird der Wert der Umgebungsvariable in die aktuelle Shell exportiert.
Als nächstes folgen die in der Umgebungsvariablendatei definierten Werte.
Als nächstes folgen die im Dockerfile definierten Werte.
Wenn die relevante Umgebungsvariable nicht gefunden wird, wird davon ausgegangen, dass die Umgebungsvariable nicht definiert ist.

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
Umgebungsvariablen in Compose
Ersetzung der Dateivariablen
Standardumgebungsvariablen in Datei deklarieren

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:
  • Detaillierte Erklärung der verfügbaren Umgebungsvariablen in Docker Compose
  • Verwendung von Umgebungsvariablen in Docker und Lösungen für häufige Probleme

<<:  Wie funktionieren die dynamischen Komponenten von Vue3?

>>:  So erstellen Sie eine gespeicherte Prozedur in MySQL und fügen Datensätze in einer Schleife hinzu

Artikel empfehlen

Vue.js implementiert das Neun-Raster-Bildanzeigemodul

Ich habe Vue.js verwendet, um ein Bildanzeigemodu...

Detaillierte Erklärung zum Schreiben von MySQL ungleich null und gleich null

1. Tabellenstruktur 2. Tabellendaten 3. Das Abfra...

MySQL-Einschränkungstypen und Beispiele

Zwang Einschränkungen gewährleisten Datenintegrit...

Zusammenfassung der allgemeinen Bedienungskenntnisse der MySQL-Datenbank

Dieser Artikel fasst gängige Betriebstechniken fü...

Einführung in Javascript DOM, Knoten und Elementerfassung

Inhaltsverzeichnis DOM Knoten Elementknoten: Text...

Detaillierte Erklärung zum effizienten MySQL-Paging

Vorwort Normalerweise wird für MySQL-Abfragen mit...

So laden Sie die Kamera in HTML

Wirkungsdiagramm: Gesamtwirkung: Video wird gelad...

Zusammenfassung der MySQL-Ansichtsprinzipien und Anwendungsbeispiele

Dieser Artikel fasst die Prinzipien und die Verwe...