Übergabe von Umgebungsvariablen an den Container in Docker

Isaac Tony 30 Januar 2023
  1. Verwendung der -e und -env Tags Übergabe von Umgebungsvariablen an den Container in Docker
  2. Verwenden Sie den Export-Befehl, um Umgebungsvariablen an den Container in Docker zu übergeben
  3. Verwendung einer -env-Datei zur Übergabe von Umgebungsvariablen an den Container in Docker
Übergabe von Umgebungsvariablen an den Container in Docker

In diesem Tutorial werden die Methoden zum Übergeben von Umgebungsvariablen an den Container in Docker vorgestellt.

Verwendung der -e und -env Tags Übergabe von Umgebungsvariablen an den Container in Docker

Wir beginnen damit, uns anzusehen, wie wir Umgebungsvariablen erstellen und an einen Container übergeben können. Wir beginnen damit, dass wir das Image, das wir verwenden werden, aus der Docker-Registrierung ziehen, indem wir den folgenden Befehl verwenden.

$ docker pull ubuntu~$ docker pull ubuntu

Ausgabe:

Using default tag: latest
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Wir verwenden das Tag -e, die Kurzform von -env, dessen Verwendung durch Ausführen des Befehls docker run -help im Terminal überprüft werden kann. Mit diesem Argument können wir mehrere Schlüssel-Wert-Paare von Umgebungsvariablen erstellen, die an den Container übergeben werden.

So können wir eine einzelne Umgebungsvariable erstellen und an einen Container übergeben, den wir mit dem Ubuntu-Image erstellt haben.

$ docker run -it -e DEMO=sample_variable ubuntu bash

Ausgabe:

root@3a20bc21d3c8:/# echo $DEMO
sample_variable

Wir können auch mehrere Tags von -e verwenden, um Umgebungsvariablen zu erstellen, indem wir sie einfach mit dem Befehl run verketten, während wir einen neuen Container erstellen, wie unten gezeigt.

$ docker run -it -e DEMO1=sample_variable1 -e DEMO2=sample_variable2 ubuntu bash

Nachdem wir diese beiden Umgebungsvariablen weitergegeben haben, können wir mit den folgenden Befehlen auf ihre Werte zugreifen. Wir haben Variable eins als DEMO1 bezeichnet, und wir können unten auf ihren Wert zugreifen.

root@9eee00d7ab01:/# echo $DEMO1

Ausgabe:

sample_variable1

In ähnlicher Weise können wir auch die Variable zwei ausdrucken, wie hier gezeigt.

root@9eee00d7ab01:/# echo $DEMO2

Ausgabe:

sample_variable2

Verwenden Sie den Export-Befehl, um Umgebungsvariablen an den Container in Docker zu übergeben

Alternativ können wir auch das Verketten von Umgebungsvariablen vermeiden, indem wir den Befehl export verwenden. Dieser Befehl ist ein integriertes Hilfsprogramm für die Linux-Bash-Shell, das auch mit der WSL verwendet werden kann.

Es ermöglicht uns, Umgebungsvariablen zu erstellen und an untergeordnete Prozesse zu übergeben, ohne bereits vorhandene Variablen zu beeinflussen. Wir beginnen mit der Erstellung der Umgebungsvariablen, wie unten gezeigt.

isaac@DESKTOP-HV44HT6:~$ export MYSQL_USER=isaactonyloi
isaac@DESKTOP-HV44HT6:~$ export MYSQL_PASS=fakepassword

Sobald wir die Umgebungsvariablen erstellt haben, können wir sie an einen Container übergeben, den wir erstellen, wie unten gezeigt.

$ docker run -it -e MYSQL_USER -e MYSQL_PASS ubuntu bash

Wir können dann mit dem Befehl echo wie unten gezeigt auf die jeweiligen Werte der Variablen zugreifen und diese anzeigen.

root@5b4dae06932d:/# echo $MYSQL_USER
isaactonyloi

Verwendung einer -env-Datei zur Übergabe von Umgebungsvariablen an den Container in Docker

Ein besserer Ansatz, der Ihnen mehr Raum zum Debuggen gibt, besteht darin, stattdessen eine Docker-Decompose-Datei zu verwenden. Das bedeutet, dass wir jetzt beim Starten unseres Docker-Containers keine Umgebungsvariablen mehr direkt übergeben müssen.

Diese Methode bedeutet, dass wir eine externe .env-Datei erstellen müssen, die unsere Umgebungsvariablen enthält. Wir können diese Datei mit dem folgenden Linux-Befehl in unserem Home-Verzeichnis erstellen.

Dieser Befehl wechselt in den Linux-vi-Editor und erstellt unsere Umgebungsvariablenliste.

$ vi env.list

Innerhalb des vi-Editors erstellen wir die Umgebungsvariablen als Schlüssel-Wert-Paare mit den Schlüsseln in Großbuchstaben und ihren jeweiligen Werten in Kleinbuchstaben. Wir beenden das Programm und speichern die Variable, indem wir den vollen Doppelpunkt drücken und den wq-Befehl eingeben.

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

wq

Mit dem Befehl ls können wir bestätigen, dass die Datei env.list erfolgreich gespeichert wurde. Dies sollte eine Liste von Dateien in diesem Verzeichnis mit env.list unter den aufgelisteten zurückgeben.

Wir können auch den Befehl cat verwenden, um die Einträge in dieser Liste anzuzeigen, wie unten gezeigt.

$ cat env.list

Ausgabe:

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

Sobald wir das eingerichtet haben, können wir jetzt das Ubuntu-Image ausführen, um den neuen Container zu erstellen, und den Pfad angeben, wo wir Variablen gespeichert haben, um sie zu übergeben.

Die Datei env.list wird in diesem Beispiel im Home-Verzeichnis abgelegt. Wenn sich Ihr Verzeichnis also in einem anderen Verzeichnis befindet, sieht Ihr Pfad möglicherweise anders aus.

Wir sollten den Befehl ausführen, um diese Umgebungsvariablen an den neuen Container zu übergeben.

$ docker run -it --env-file ./env.list ubuntu bash

Wir können überprüfen, ob wir die Umgebungsvariablen erfolgreich an den Container übergeben haben, indem wir die Variablen wie unten gezeigt drucken.

/# echo $MYSQL_USER
/# echo $MYSQL_PASS

Ausgabe:

Isaactonyloi
fakepassword

Anstelle der früheren Methoden können wir eine Vorlagendatei erstellen, die alle Umgebungsvariablen enthält, die wir übergeben möchten. Auf diese Weise können wir die in dieser Datei erstellten Umgebungsvariablen einfach überschreiben, wenn wir Änderungen vornehmen möchten.

Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

Verwandter Artikel - Docker Environment Variable