CodeGym /Kurse /Docker SELF /Umgebungsvariablen in Docker Compose

Umgebungsvariablen in Docker Compose

Docker SELF
Level 16 , Lektion 0
Verfügbar

6.1 Grundlagen der Umgebungsvariablen

Umgebungsvariablen spielen eine wichtige Rolle bei der Konfiguration von Anwendungen. Sie ermöglichen es, das Verhalten und die Parameter von Services dynamisch zu ändern, ohne den Code zu ändern. Docker Compose unterstützt die Verwendung von Umgebungsvariablen zur Konfiguration von Containern, was Flexibilität und einfache Verwaltung der Konfiguration bietet.

Eine der bequemsten Methoden zur Verwaltung von Umgebungsvariablen ist die Verwendung von .env-Dateien. In dieser Vorlesung besprechen wir ausführlich, wie man Umgebungsvariablen in Docker Compose verwendet, einschließlich der Erstellung und Nutzung von .env-Dateien.

Grundlagen der Umgebungsvariablen in Docker Compose

Umgebungsvariablen können in der compose.yaml-Datei verwendet werden, um Konfigurationen zu parametrisieren. Diese Variablen können in einer .env-Datei, direkt in der compose.yaml-Datei oder über die Kommandozeile definiert werden.

Beispiel für die Verwendung von Umgebungsvariablen in compose.yaml:

In diesem Beispiel werden die Variablen NGINX_VERSION und HOST_PORT verwendet, deren Werte entweder in der .env-Datei oder über die Kommandozeile gesetzt werden können.

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"

6.2 Verwendung von .env-Dateien

1. Erstellen einer .env-Datei

Die .env-Datei wird im gleichen Verzeichnis wie die compose.yaml-Datei platziert und enthält Paarungen von "key-value", die die Werte der Umgebungsvariablen definieren. Jede Variable wird in einer neuen Zeile angegeben.

Beispiel einer .env-Datei:

.env

NGINX_VERSION=latest
HOST_PORT=8080
DB_USER=admin
DB_PASSWORD=secret

2. Integration der .env-Datei mit Docker Compose

Docker Compose lädt automatisch die Variablen aus der .env-Datei, wenn diese sich im gleichen Verzeichnis wie die compose.yaml-Datei befindet.

Beispiel einer compose.yaml-Datei mit Verwendung von Umgebungsvariablen:

In diesem Beispiel werden die Variablen NGINX_VERSION, HOST_PORT, DB_USER und DB_PASSWORD aus der .env-Datei übernommen.

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}

6.3 Übergabe von Variablen

Übergabe von Variablen über die Kommandozeile

Du kannst Umgebungsvariablen direkt über die Kommandozeile mit dem Befehl export in Unix-ähnlichen Systemen oder mit dem Parameter --env-file in Docker Compose übergeben.

Beispiel für die Nutzung von export:

Terminal

export NGINX_VERSION=latest
export HOST_PORT=8080
docker compose up

Beispiel für die Nutzung von --env-file:

Du kannst eine alternative Datei mit Umgebungsvariablen mit dem Parameter --env-file angeben.

Terminal

docker compose --env-file .env.dev up

Verwendung von eingebauten Umgebungsvariablen in Docker Compose

Docker Compose unterstützt eingebaute Umgebungsvariablen wie ${PWD}, die das aktuelle Arbeitsverzeichnis darstellen.

Beispiel:

Yaml

version: '3.8'

services:
  app:
    image: myapp:latest
    volumes:
      - ${PWD}/app:/app

6.4 Praktische Beispiele

Praktische Beispiele zur Verwendung von Umgebungsvariablen:

Beispiel 1: Konfiguration eines Webservers und einer Datenbank

Erstelle eine Datei .env mit Parametern für den Webserver und die Datenbank:

.env

NGINX_VERSION=1.19.3
HOST_PORT=8080
DB_USER=myuser
DB_PASSWORD=mypassword

Erstelle eine Datei compose.yaml, die diese Variablen verwendet:

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  postgres-data:

Starte Docker Compose:

Terminal

docker compose up

Beispiel 2: Trennung von Entwicklungs- und Produktionsumgebungen

Erstelle zwei .env-Dateien für verschiedene Umgebungen: .env.dev und .env.prod.

Datei .env.dev:

.env

NGINX_VERSION=latest
HOST_PORT=8080
DB_USER=devuser
DB_PASSWORD=devpassword

Datei .env.prod:

.env

NGINX_VERSION=1.19.3
HOST_PORT=80
DB_USER=produser
DB_PASSWORD=prodpassword

Erstelle eine Datei compose.yaml, die Variablen aus diesen Dateien verwendet:

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  postgres-data:

Starte Docker Compose für die Entwicklung:

Terminal

docker compose --env-file .env.dev up

Starte Docker Compose für die Produktion:

Terminal

docker compose --env-file .env.prod up
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION