DOCKER COMPOSE — MULTI-CONTAINER ARCHITECTURE docker-compose network nginx Web Server port: 80:80 app Application port: 3000 db PostgreSQL port: 5432 redis Cache docker-compose.yml defines all services, networks, and volumes in one file

Die Verwaltung einzelner Docker-Container mit langen docker run-Befehlen wird schnell unpraktisch, wenn Ihre Anwendung mehrere miteinander verbundene Dienste erfordert. Docker Compose loest dieses Problem, indem es Ihnen ermoeglicht, Multi-Container-Anwendungen mit einer einzigen deklarativen YAML-Datei zu definieren und zu verwalten.

Voraussetzungen

  • Docker Engine auf Ihrem System installiert
  • Grundlegendes Verstaendnis der Docker-Konzepte
  • Ein Texteditor und Terminal-Zugang mit sudo-Rechten

Was ist Docker Compose?

Docker Compose ist ein Werkzeug zum Definieren und Ausfuehren von Multi-Container-Docker-Anwendungen. Anstatt mehrere docker run-Befehle auszufuehren, beschreiben Sie Ihren gesamten Anwendungs-Stack in einer docker-compose.yml-Datei und starten alles mit einem einzigen Befehl.

Compose V2 vs. V1

MerkmalCompose V1 (Veraltet)Compose V2 (Aktuell)
Befehldocker-composedocker compose
SprachePythonGo
StatusVeraltetAktive Entwicklung

Haeufige Docker Compose Befehle

# Alle Dienste im Hintergrund starten
docker compose up -d

# Alle Dienste stoppen
docker compose down

# Logs aller Dienste anzeigen
docker compose logs

# Einen bestimmten Dienst neu starten
docker compose restart php

# Befehl in laufendem Container ausfuehren
docker compose exec mysql mysql -u root -p

Produktionsueberlegungen

Neustart-Richtlinien

services:
  web:
    restart: unless-stopped

Health Checks

services:
  api:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3

Ressourcenlimits

services:
  worker:
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 512M

Sicherheits-Best-Practices

  • Container nie als root ausfuehren, es sei denn unbedingt noetig
  • read_only: true setzen fuer Container, die nicht schreiben muessen
  • Unnoetige Linux-Faehigkeiten entfernen mit cap_drop: [ALL]

Fazit

Docker Compose transformiert die Art und Weise, wie Systemadministratoren Multi-Container-Anwendungen bereitstellen und verwalten. Durch die Definition Ihrer Infrastruktur in einer deklarativen YAML-Datei gewinnen Sie Reproduzierbarkeit, Versionskontrolle und einen Ein-Befehl-Deployment-Workflow.