Grundlagen und Konfiguration von Dockerfile-Umgebungsvariablen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses Tutorial führt Sie durch die Grundlagen der Arbeit mit Umgebungsvariablen in einer Docker Dockerfile. Sie werden lernen, wie Sie Umgebungsvariablen definieren, verwalten und nutzen, um die Flexibilität und Portabilität Ihrer containerisierten Anwendungen zu verbessern. Am Ende dieses Artikels werden Sie einen soliden Überblick darüber haben, wie Sie Umgebungsvariablen nutzen können, um Ihre Docker-Entwicklungs- und Bereitstellungsworkflows zu optimieren.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-413803{{"Grundlagen und Konfiguration von Dockerfile-Umgebungsvariablen"}} docker/info -.-> lab-413803{{"Grundlagen und Konfiguration von Dockerfile-Umgebungsvariablen"}} docker/version -.-> lab-413803{{"Grundlagen und Konfiguration von Dockerfile-Umgebungsvariablen"}} docker/build -.-> lab-413803{{"Grundlagen und Konfiguration von Dockerfile-Umgebungsvariablen"}} end

Grundlagen zu Docker-Umgebungsvariablen

Docker-Umgebungsvariablen sind ein leistungsstarkes Feature, das es Ihnen ermöglicht, das Verhalten Ihrer Docker-Container anzupassen. Sie bieten eine Möglichkeit, Konfigurationsdaten an Ihre Anwendung, die innerhalb des Containers läuft, zu übergeben, ohne diese direkt in die Anwendung zu programmieren. Dies macht Ihre Anwendung portabler und einfacher zu verwalten, da Sie einfach die Umgebungsvariablen ändern können, ohne den Anwendungscode zu ändern.

Umgebungsvariablen in Docker können verwendet werden, um eine Vielzahl von Informationen zu speichern, wie beispielsweise:

  • Datenbankverbindungsdetails (z. B. Host, Port, Benutzername, Passwort)
  • API-Schlüssel oder andere sensible Daten
  • Feature-Flags oder Konfigurationseinstellungen
  • Pfade zu externen Ressourcen (z. B. Protokolldateien, temporäre Verzeichnisse)

Durch die Verwendung von Umgebungsvariablen können Sie Ihre Docker-Container einfach an verschiedene Umgebungen (z. B. Entwicklung, Staging, Produktion) anpassen, ohne das Image neu erstellen zu müssen.

graph TD A[Docker Container] --> B[Application] B --> C[Environment Variables] C --> D[Configuration Data]

In der obigen Grafik können wir sehen, wie Umgebungsvariablen verwendet werden, um Konfigurationsdaten an die Anwendung zu übergeben, die innerhalb des Docker-Containers läuft.

Tabelle 1: Häufige Anwendungsfälle für Docker-Umgebungsvariablen

Anwendungsfall Beispiel
Datenbankverbindung DB_HOST, DB_PORT, DB_USER, DB_PASSWORD
API-Schlüssel API_KEY, API_SECRET
Feature-Flags ENABLE_FEATURE_X, DISABLE_FEATURE_Y
Pfade zu externen Ressourcen LOG_DIR, TEMP_DIR

Indem Sie die Rolle von Umgebungsvariablen in Docker verstehen, können Sie flexiblere und wartbarere Anwendungen schreiben, die einfach in verschiedenen Umgebungen bereitgestellt und konfiguriert werden können.

Definieren von Umgebungsvariablen in einer Dockerfile

Um Umgebungsvariablen in einer Dockerfile zu definieren, können Sie die Anweisung ENV verwenden. Diese Anweisung ermöglicht es Ihnen, eine oder mehrere Umgebungsvariablen festzulegen, die während der Laufzeit des Containers verfügbar sein werden.

Hier ist ein Beispiel, wie man Umgebungsvariablen in einer Dockerfile definiert:

## Set a single environment variable
ENV APP_ENV=production

## Set multiple environment variables
ENV DB_HOST=mysql DB_PORT=3306 DB_USER=myuser DB_PASSWORD=secret

In obigem Beispiel legen wir zunächst eine einzelne Umgebungsvariable APP_ENV mit dem Wert production fest. Dann legen wir mehrere Umgebungsvariablen DB_HOST, DB_PORT, DB_USER und DB_PASSWORD fest.

Diese Umgebungsvariablen können dann von der Anwendung, die innerhalb des Containers läuft, abgerufen und verwendet werden.

graph TD A[Dockerfile] --> B[ENV Instruction] B --> C[Environment Variables] C --> D[Container Runtime] D --> E[Application]

Die Anweisung ENV kann auch verwendet werden, um Standardwerte für Umgebungsvariablen festzulegen, die bei der Laufzeit des Containers mit der Option --env oder -e überschrieben werden können.

## Set a default value for the APP_ENV variable
ENV APP_ENV=development

In diesem Beispiel wird die Variable APP_ENV auf development festgelegt, es sei denn, sie wird beim Starten des Containers überschrieben.

Tabelle 1: Beispiele für die Dockerfile-ENV-Anweisung

Anweisung Beispiel
Einzelne Variable ENV APP_ENV=production
Mehrere Variablen ENV DB_HOST=mysql DB_PORT=3306 DB_USER=myuser DB_PASSWORD=secret
Standardwert ENV APP_ENV=development

Indem Sie Umgebungsvariablen in Ihrer Dockerfile definieren, können Sie Ihre Docker-Container besser konfigurieren und an verschiedene Umgebungen anpassen, was ihre Bereitstellung und Wartung erleichtert.

Verwalten und Verwenden von Umgebungsvariablen

Zugriff auf Umgebungsvariablen in Containern

Sobald Sie Umgebungsvariablen in Ihrer Dockerfile definiert haben, können Sie sie innerhalb des laufenden Containers mit der Standard-Shell-Syntax zugreifen. Beispielsweise können Sie in einem Bash-Skript den Wert der Umgebungsvariablen DB_HOST wie folgt abrufen:

echo "Database host: $DB_HOST"

Sie können auch Umgebungsvariablen in Ihrem Anwendungscode verwenden, je nachdem, welche Programmiersprache und welches Framework Sie nutzen.

Überschreiben von Umgebungsvariablen zur Laufzeit

Wenn Sie einen Docker-Container ausführen, können Sie die in der Dockerfile definierten Umgebungsvariablen mit der Option --env oder -e überschreiben. Dies ermöglicht es Ihnen, das Verhalten Ihres Containers einfach anzupassen, ohne das Image neu erstellen zu müssen.

docker run -e DB_HOST=192.168.1.100 -e DB_PASSWORD=newpassword myapp

In diesem Beispiel werden die Umgebungsvariablen DB_HOST und DB_PASSWORD zur Laufzeit überschrieben und haben Vorrang vor den in der Dockerfile definierten Werten.

Verwalten von Umgebungsvariablen mit Docker Compose

Wenn Sie Docker Compose verwenden, um Ihre Anwendung zu verwalten, können Sie Umgebungsvariablen im environment-Abschnitt Ihrer docker-compose.yml-Datei definieren. Dies ermöglicht es Ihnen, die Konfiguration für Ihren gesamten Anwendungsstapel zu zentralisieren.

version: "3"
services:
  web:
    image: myapp
    environment:
      DB_HOST: mysql
      DB_PORT: 3306
      DB_USER: myuser
      DB_PASSWORD: secret
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret

In diesem Beispiel werden die Umgebungsvariablen für den web-Service im environment-Abschnitt definiert, und der mysql-Service hat ebenfalls seine eigenen definierten Umgebungsvariablen.

graph TD A[Docker Compose] --> B[Environment Variables] B --> C[Docker Containers] C --> D[Applications]

Indem Sie Umgebungsvariablen auf diese Weise verwalten, können Sie Ihre Anwendung einfach skalieren, Dienste austauschen und eine konsistente Konfiguration in verschiedenen Umgebungen aufrechterhalten.

Zusammenfassung

In diesem umfassenden Tutorial haben Sie gelernt, wie wichtig Umgebungsvariablen in einer Docker Dockerfile sind. Sie haben untersucht, wie Sie Umgebungsvariablen definieren und verwalten können, sowie wie Sie sie effektiv in Ihren containerisierten Anwendungen nutzen können. Durch das Beherrschen der Konzepte von Dockerfile-Umgebungsvariablen können Sie nun flexiblere, konfigurierbarere und wartbarere Docker-basierte Lösungen erstellen, die sich an verschiedene Bereitstellungsumgebungen anpassen. Mit diesem Wissen können Sie robuste und skalierbare Docker-basierte Anwendungen entwickeln, die den sich ändernden Anforderungen Ihres Unternehmens gerecht werden.