Skip to main content

Docker Compose – Struktur & Aufbau

Docker Compose ist das zentrale Werkzeug zur strukturierten Definition, Bereitstellung und Verwaltung mehrerer Container als zusammenhängender Stack. Im professionellen Betrieb ersetzt Docker Compose unstrukturierte docker run-Kommandos und schafft reproduzierbare, wartbare Deployments.

Eine sauber aufgebaute Compose-Struktur ist entscheidend für:

  • Stabilität im Betrieb
  • Übersichtlichkeit
  • Automatisierung
  • Fehlervermeidung

1. Grundprinzip von Docker Compose

Docker Compose nutzt eine YAML-Datei (docker-compose.yml), um mehrere Services inklusive Netzwerken, Volumes und Abhängigkeiten deklarativ zu beschreiben.

Das Grundprinzip lautet:

Infrastruktur als Code

Der definierte Zustand ist reproduzierbar, versionierbar und plattformunabhängig.


2. Zentrale Bestandteile einer Compose-Datei

Eine professionelle Compose-Datei besteht aus klar getrennten Sektionen:

  • services
  • networks
  • volumes

Optional kommen hinzu:

  • configs
  • secrets

3. services – Applikationsdefinition

Der Abschnitt services definiert alle Container, die gemeinsam einen Stack bilden.

3.1 Typische Service-Parameter

  • image / build
  • container_name
  • restart
  • ports
  • volumes
  • networks
  • depends_on

Jeder Service sollte exakt eine fachliche Aufgabe erfüllen.


3.2 Restart-Policies

Restart-Policies sind im Produktivbetrieb zwingend erforderlich.

  • no – nicht empfohlen
  • always – Standard für produktive Services
  • unless-stopped – kontrollierter Dauerbetrieb

4. networks – Netzwerkstruktur

Compose ermöglicht die explizite Definition mehrerer Netzwerke.

4.1 Vorteile eigener Netzwerke

  • Saubere Segmentierung
  • Erhöhte Sicherheit
  • Klare Kommunikationspfade

4.2 Beispielhafte Segmentierung

  • frontend
  • backend
  • database

Services erhalten ausschließlich Zugriff auf benötigte Netzwerke.


5. volumes – Persistente Daten

Volumes werden in Compose zentral definiert und Services gezielt zugewiesen.

5.1 Vorteile zentraler Volume-Definition

  • Bessere Übersicht
  • Wiederverwendbarkeit
  • Einfachere Backups

Best Practice: Keine anonymen Volumes im Produktivbetrieb.


6. Environment-Handling

6.1 Environment Variablen

Konfigurationen sollten nicht im Image, sondern über Environment-Variablen erfolgen.

  • environment:
  • env_file:

6.2 Sicherheitsaspekte

  • Keine Secrets im Klartext
  • .env-Dateien nicht versionieren

7. depends_on & Startreihenfolge

depends_on steuert die Startreihenfolge von Services.

Wichtiger Hinweis:

  • depends_on prüft keine Service-Gesundheit
  • Healthchecks sind zusätzlich notwendig

8. Typische Strukturfehler

  • Alles in einem Service
  • Keine Netzsegmentierung
  • Hardcodierte Konfigurationen
  • Keine Restart-Policies

9. Best Practices (Venasty Systems Standard)

  • Ein Service = eine Aufgabe
  • Explizite Netzwerke definieren
  • Named Volumes für Daten
  • .env für Konfiguration nutzen
  • Compose-Dateien versionieren

10. Fazit

Die Compose-Struktur entscheidet über Wartbarkeit und Betriebssicherheit eines Docker-Stacks.

Sauber strukturierte Compose-Dateien sind die Grundlage für reproduzierbare Deployments, stabile Updates und effiziente Fehleranalyse.

Venasty Systems nutzt Docker Compose als verbindlichen Standard für containerbasierte Services im produktiven Betrieb.