Das Verständnis der Rolle von Umgebungsvariablen in Docker Compose

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 Bedeutung und Verwendung von Umgebungsvariablen in Docker Compose. Sie werden lernen, wie Sie Umgebungsvariablen definieren und nutzen können, um Ihre auf Docker basierenden Anwendungen zu konfigurieren. Dadurch wird ein flexiblerer und wartbarerer Bereitstellungsprozess gewährleistet. Am Ende dieses Artikels werden Sie ein solides Verständnis der Rolle von Umgebungsvariablen in Docker Compose haben und wissen, wie Sie sie effektiv anwenden können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/run -.-> lab-398444{{"Das Verständnis der Rolle von Umgebungsvariablen in Docker Compose"}} docker/info -.-> lab-398444{{"Das Verständnis der Rolle von Umgebungsvariablen in Docker Compose"}} end

Das Verständnis von Umgebungsvariablen in Docker Compose

Docker Compose ist ein leistungsstarkes Tool zur Definition und Verwaltung von Anwendungen mit mehreren Containern. Eines der Schlüsselmerkmale von Docker Compose ist die Möglichkeit, Umgebungsvariablen zu verwenden, um das Verhalten Ihrer Anwendung zu konfigurieren und anzupassen. Umgebungsvariablen spielen in Docker Compose eine entscheidende Rolle, da sie es Ihnen ermöglichen, die Konfiguration von Ihrem Anwendungs-Code zu trennen, was die Anwendung portabler und leichter zu verwalten macht.

Das Verständnis von Umgebungsvariablen

Umgebungsvariablen sind eine Reihe von Schlüssel-Wert-Paaren, die für Ihre Anwendung zur Laufzeit verfügbar sind. Sie bieten eine Möglichkeit, Konfigurationseinstellungen, sensible Informationen und andere Daten zu speichern und darauf zuzugreifen, die Ihre Anwendung für den korrekten Betrieb benötigt.

Im Kontext von Docker Compose können Umgebungsvariablen auf Dienstebene definiert werden, wodurch Sie das Verhalten einzelner Container in Ihrer Anwendung anpassen können. Diese Flexibilität ermöglicht es Ihnen, Ihre Anwendung einfach an verschiedene Umgebungen wie Entwicklung, Staging und Produktion anzupassen, ohne Ihren Anwendungs-Code ändern zu müssen.

Das Definieren von Umgebungsvariablen in Docker Compose

Um Umgebungsvariablen in Ihrer Docker Compose-Datei zu definieren, können Sie die Schlüsselwörter environment oder env_file verwenden. Das Schlüsselwort environment ermöglicht es Ihnen, Umgebungsvariablen direkt in der Compose-Datei zu definieren, während das Schlüsselwort env_file es Ihnen erlaubt, eine Datei mit den Umgebungsvariablen anzugeben.

Hier ist ein Beispiel, wie Sie Umgebungsvariablen mit dem Schlüsselwort environment definieren können:

version: "3"
services:
  web:
    image: my-web-app
    environment:
      - DB_HOST=database
      - DB_USER=myuser
      - DB_PASSWORD=secretpassword

In diesem Beispiel sind für den web-Dienst drei Umgebungsvariablen definiert: DB_HOST, DB_USER und DB_PASSWORD.

Alternativ können Sie das Schlüsselwort env_file verwenden, um eine Datei mit den Umgebungsvariablen anzugeben:

version: "3"
services:
  web:
    image: my-web-app
    env_file:
      - web-app.env

In diesem Fall sind die Umgebungsvariablen in einer Datei namens web-app.env definiert, die wie folgt aussehen könnte:

DB_HOST=database
DB_USER=myuser
DB_PASSWORD=secretpassword

Beide Methoden sind gültig und können je nach Ihren Vorlieben und der Komplexität Ihrer Umgebungsvariablen austauschbar verwendet werden.

Der Zugriff auf Umgebungsvariablen in Ihrer Anwendung

Sobald Sie die Umgebungsvariablen in Ihrer Docker Compose-Datei definiert haben, kann Ihre Anwendung darauf zugreifen, indem Sie den entsprechenden Mechanismus für Ihre Programmiersprache oder Ihr Framework verwenden. Beispielsweise können Sie in einer Node.js-Anwendung auf die Umgebungsvariablen über das process.env-Objekt zugreifen.

const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPassword = process.env.DB_PASSWORD;

Ebenso können Sie in einer Python-Anwendung das os.environ-Modul verwenden, um auf die Umgebungsvariablen zuzugreifen.

import os

db_host = os.environ.get('DB_HOST')
db_user = os.environ.get('DB_USER')
db_password = os.environ.get('DB_PASSWORD')

Durch die Verwendung von Umgebungsvariablen können Sie die Konfiguration Ihrer Anwendung vom Code trennen, was die Anwendung flexibler und leichter zu verwalten macht.

Definieren und Verwenden von Umgebungsvariablen

Definieren von Umgebungsvariablen in Docker Compose

Wie bereits erwähnt, können Sie Umgebungsvariablen in Ihrer Docker Compose-Datei mit den Schlüsselwörtern environment oder env_file definieren. Lassen Sie uns diese Optionen genauer untersuchen.

Verwendung des Schlüsselworts environment

Das Schlüsselwort environment ermöglicht es Ihnen, Umgebungsvariablen direkt in der Compose-Datei zu definieren. Hier ist ein Beispiel:

version: "3"
services:
  web:
    image: my-web-app
    environment:
      - DB_HOST=database
      - DB_USER=myuser
      - DB_PASSWORD=secretpassword

In diesem Beispiel sind für den web-Dienst drei Umgebungsvariablen definiert: DB_HOST, DB_USER und DB_PASSWORD.

Verwendung des Schlüsselworts env_file

Alternativ können Sie das Schlüsselwort env_file verwenden, um eine Datei mit den Umgebungsvariablen anzugeben. Dies kann nützlich sein, wenn Sie eine große Anzahl von Umgebungsvariablen haben oder diese von der Compose-Datei trennen möchten.

version: "3"
services:
  web:
    image: my-web-app
    env_file:
      - web-app.env

In diesem Fall sind die Umgebungsvariablen in einer Datei namens web-app.env definiert, die wie folgt aussehen könnte:

DB_HOST=database
DB_USER=myuser
DB_PASSWORD=secretpassword

Zugriff auf Umgebungsvariablen in Ihrer Anwendung

Sobald Sie die Umgebungsvariablen in Ihrer Docker Compose-Datei definiert haben, kann Ihre Anwendung darauf zugreifen, indem Sie den entsprechenden Mechanismus für Ihre Programmiersprache oder Ihr Framework verwenden.

Hier ist ein Beispiel, wie Sie auf Umgebungsvariablen in einer Node.js-Anwendung zugreifen können:

const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPassword = process.env.DB_PASSWORD;

Und in einer Python-Anwendung:

import os

db_host = os.environ.get('DB_HOST')
db_user = os.environ.get('DB_USER')
db_password = os.environ.get('DB_PASSWORD')

Durch die Verwendung von Umgebungsvariablen können Sie die Konfiguration Ihrer Anwendung vom Code trennen, was die Anwendung flexibler und leichter zu verwalten macht.

Anwenden von Umgebungsvariablen für die Konfiguration

Trennen der Konfiguration vom Code

Einer der Hauptvorteile der Verwendung von Umgebungsvariablen in Docker Compose ist die Möglichkeit, die Konfiguration von Ihrem Anwendungs-Code zu trennen. Diese Aufgabentrennung macht Ihre Anwendung portabler, wartbarer und leichter zu verwalten.

Indem Sie Konfigurationseinstellungen in Umgebungsvariablen speichern, können Sie Ihre Anwendung einfach an verschiedene Umgebungen wie Entwicklung, Staging und Produktion anpassen, ohne Ihren Anwendungs-Code ändern zu müssen. Dieser Ansatz trägt auch dazu bei, sicherzustellen, dass sensible Informationen wie Datenbankzugangsdaten oder API-Schlüssel nicht hartkodiert in Ihrer Anwendung sind.

Konfigurieren verschiedener Umgebungen

Betrachten wir ein Beispiel, in dem Sie eine Webanwendung haben, die eine Verbindung zu einer Datenbank herstellen muss. Sie können Umgebungsvariablen verwenden, um die Datenbankverbindungseinstellungen für verschiedene Umgebungen zu konfigurieren.

Nehmen wir an, Sie haben die folgende Docker Compose-Datei:

version: "3"
services:
  web:
    image: my-web-app
    environment:
      - DB_HOST=${DB_HOST}
      - DB_USER=${DB_USER}
      - DB_PASSWORD=${DB_PASSWORD}
  database:
    image: postgres
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}

In diesem Beispiel verwenden sowohl der web- als auch der database-Dienst Umgebungsvariablen, um ihre jeweiligen Einstellungen zu konfigurieren. Die Variablen DB_HOST, DB_USER, DB_PASSWORD und DB_NAME sind nicht in der Compose-Datei definiert, sondern in der Umgebung, in der die Compose-Datei ausgeführt wird.

Um die Anwendung in verschiedenen Umgebungen auszuführen, können Sie separate Umgebungsvariablendateien erstellen oder die Variablen direkt in der Shell festlegen. Beispielsweise könnten Sie die folgenden Umgebungsvariablendateien haben:

development.env

DB_HOST=localhost
DB_USER=myuser
DB_PASSWORD=devpassword
DB_NAME=myapp_dev

production.env

DB_HOST=production-db.example.com
DB_USER=produser
DB_PASSWORD=prodpassword
DB_NAME=myapp_prod

Sie können dann die entsprechende Umgebungsvariablendatei verwenden, wenn Sie Ihre Docker Compose-Befehle ausführen:

## Run in development environment
docker-compose --env-file=development.env up -d

## Run in production environment
docker-compose --env-file=production.env up -d

Indem Sie Umgebungsvariablen verwenden, um Ihre Anwendung zu konfigurieren, können Sie sie einfach an verschiedene Umgebungen anpassen, ohne Ihre Compose-Datei oder Ihren Anwendungs-Code ändern zu müssen.

Best Practices für Umgebungsvariablen

Wenn Sie mit Umgebungsvariablen in Docker Compose arbeiten, ist es wichtig, einige Best Practices zu befolgen:

  1. Verwenden Sie sinnvolle Variablennamen: Wählen Sie beschreibende und sinnvolle Namen für Ihre Umgebungsvariablen, um sie leichter zu verstehen und zu warten.
  2. Schützen Sie sensible Informationen: Stellen Sie sicher, dass sensible Informationen wie Datenbankzugangsdaten oder API-Schlüssel nicht in Ihrer Compose-Datei oder in den Umgebungsvariablendateien offen gelegt werden.
  3. Bieten Sie Standardwerte an: Erwägen Sie, Standardwerte für Umgebungsvariablen in Ihrer Compose-Datei bereitzustellen, damit Ihre Anwendung auch dann noch ausgeführt werden kann, wenn eine Variable nicht festgelegt ist.
  4. Dokumentieren Sie Ihre Variablen: Dokumentieren Sie den Zweck und die erwarteten Werte jeder Umgebungsvariablen in der Dokumentation Ihres Projekts oder in der README-Datei.
  5. Verwenden Sie umgebungsspezifische Dateien: Trennen Sie umgebungsspezifische Konfigurationen in verschiedene Umgebungsvariablendateien auf, um Ihre Einrichtung organisiert und wartbar zu halten.

Indem Sie diese Best Practices befolgen, können Sie Umgebungsvariablen effektiv nutzen, um die Konfiguration Ihrer auf Docker Compose basierenden Anwendungen zu verwalten.

Zusammenfassung

In diesem Tutorial haben Sie die Rolle von Umgebungsvariablen in Docker Compose untersucht. Sie haben gelernt, wie Sie Umgebungsvariablen definieren und nutzen können, um Ihre auf Docker basierenden Anwendungen zu konfigurieren. Dadurch wird ein flexiblerer und anpassungsfähigerer Bereitstellungsprozess gewährleistet. Indem Sie Umgebungsvariablen nutzen, können Sie verschiedene Konfigurationen wie Datenbankverbindungszeichenfolgen, API-Schlüssel und andere sensible Informationen einfach verwalten, ohne sie in Ihren Docker Compose-Dateien hartzukodieren. Das Verständnis der Macht von Umgebungsvariablen in Docker Compose ist eine entscheidende Fähigkeit für das Erstellen und Warten von robusten, skalierbaren und wartbaren auf Docker basierenden Anwendungen.