Skip to content
BotServBotServ
DockerComposeOptimierungOverrideHealthcheck

Docker Compose-Setups optimieren

Compose-Dateien schlanker, schneller und wartbarer gestalten. Overrides, Variablen, Healthchecks und Lesbarkeit.

S

schutzgeist

2 min read
Docker Compose-Setups optimieren

Docker Compose-Setups optimieren

Was dieser Artikel über Compose-Optimierung behandelt

  • Wie man Compose-Dateien übersichtlich hält.
  • Overrides und Umgebungsvariablen.
  • Healthchecks und Restart-Policies.
  • Netzwerk- und Volume-Optimierung.
  • Tipps für schnellere und sicherere Setups.

Einleitung: Docker Compose-Setups optimieren

Grosse Compose-Dateien werden schnell unübersichtlich. Mit der Zeit sammeln sich alte Umgebungsvariablen, ungenutzte Ports und veraltete Images an. Eine gute Compose-Struktur trennt Standard- und Umgebungs-Konfiguration, nutzt Healthchecks und hält die Dateien lesbar. Wer sein Setup gezielt optimiert, spart Zeit bei Updates und Fehlersuche.

Dieser Artikel zeigt bewährte Wege, Docker Compose-Setups zu verbessern.

Wichtige Begriffe

  • Override-Datei: docker-compose.override.yml.
  • .env: Datei mit Umgebungsvariablen.
  • Healthcheck: Selbstüberprüfung des Containers.
  • Depends_on: Startabfolge.
  • Profiles: Auswahl von Diensten beim Start.
  • Secrets: Sichere Verwaltung von Passwörtern.
  • Templating: Variablen in Compose.
  • Extends: Konfiguration teilen.

Basis- und Override-Dateien

# docker-compose.yml
services:
  web:
    image: nginx
    ports:
      - "80:80"
# docker-compose.override.yml
services:
  web:
    ports:
      - "8080:80"

docker compose up lädt automatisch beide Dateien.

Umgebungsvariablen

.env:

APP_PORT=8080
DB_PASSWORD=geheim
services:
  web:
    ports:
      - "${APP_PORT}:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}

Healthchecks

services:
  web:
    image: nginx
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:80"]
      interval: 30s
      timeout: 10s
      retries: 3

Profilen

services:
  test:
    image: busybox
    profiles:
      - test
docker compose --profile test up -d

Restart-Policies

services:
  db:
    image: postgres
    restart: unless-stopped

Ressourcenlimits

services:
  app:
    image: mein-app
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 512M

Netzwerke sauber trennen

services:
  web:
    networks:
      - frontend
  db:
    networks:
      - backend

networks:
  frontend:
  backend:
    internal: true

Volumes gezielt wählen

services:
  db:
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Named Volumes statt Bind Mounts, wo möglich.

Tipps

  • Ein Service pro Aufgabe.
  • Klare Namen verwenden.
  • Override-Dateien für Entwicklung/Produktion.
  • .env.example für Teams bereitstellen.
  • Nicht alle Services in einer Datei definieren.
  • Healthchecks für kritische Dienste.
  • Logging-Limits setzen.
  • Versionen fixieren.
  • Unnötige Umgebungsvariablen entfernen.
  • .env nicht ins Git einchecken.

Typische Stolpersteine

  • Monolitische Compose-Dateien: Schwer wartbar.
  • Fehlende .env: Container starten nicht.
  • Keine Healthchecks: Ausfälle werden spät erkannt.
  • Ports im Überfluss: Sicherheitslücken.
  • Alte Image-Tags: latest in Produktion.
  • Fehlende Limits: Container beanspruchen alles.
  • Ungetestete Overrides: Konflikte beim Zusammenführen.

FAQ: Docker Compose optimieren

Was ist eine Override-Datei? Eine zusätzliche docker-compose.override.yml, die die Hauptdatei ergänzt.

Soll ich .env nutzen? Ja, für portierbare Konfiguration und geheime Werte.

Sind Healthchecks sinnvoll? Ja, besonders für kritische Dienste wie Datenbanken.

Wann Profiles verwenden? Wenn nicht immer alle Dienste gestartet werden sollen.

Was verbessert Netzwerk-Isolation? Getrennte Netzwerke für Frontend, Backend und Datenbank.

Quellen und weiterführende Literatur

Zusammenfassung: Docker Compose-Setups optimieren

Gut optimierte Compose-Setups nutzen Overrides, Umgebungsvariablen, Healthchecks, Ressourcenlimits und Netzwerk-Isolation. Profilen und klaren Benennungen machen Dateien übersichtlich. Versionierte Images, getestete .env-Dateien und saubere Netzwerke verbessern Sicherheit und Wartbarkeit. Wer regelmässig aufräumt, behält auch bei wachsender Anzahl an Containern den Überblick.

Zurück zum KI Blog
Share:

Ähnliche Beiträge