Zum Inhalt
Bytearium

Keine Werbung und keine Partnerlinks aktiv

Cloud & Entwicklung

Docker Compose: Stack in einer Datei beschreiben

Docker Compose beschreibt Dienste, Netze und Volumes in einer YAML-Datei und startet alles mit einem Befehl. Aufbau, Stolperfallen, Minecraft-Beispiel.

Dieser Eintrag liegt noch unter unserer Mindestlatte für den Suchindex (Umfang und Zahl der Quellen) und wird überarbeitet. Er ist deshalb nicht in Suchmaschinen gelistet.

Acht docker run-Befehle im Shell-Verlauf sind ein Gedächtnistest. Eine Compose-Datei ist ein Dokument.

Kurz gesagt

Docker Compose ist ein Werkzeug, um Anwendungen aus mehreren Containern in einer einzigen YAML-Datei zu beschreiben und zu starten, der Compose-Datei [1]. Du beschreibst Dienste, Netze und Volumes einmal, und ein Befehl legt alle an und startet sie [1][2]. Warum nutzen? Die Datei ist ein lesbarer, versionierbarer Nachweis, wie dein Aufbau gebaut ist. Unsere Einschätzung: Für ein Homelab mit mehr als einem Container ist Compose das erste Werkzeug, das du vor allem Größeren lernen solltest.

So funktioniert’s

  1. Die Datei. Die Standard-Compose-Datei heißt compose.yaml (bevorzugt) oder compose.yml und liegt im Arbeitsverzeichnis; die älteren Namen docker-compose.yaml und docker-compose.yml funktionieren weiter [2]. Die Datei folgt der Compose Specification [2].
  2. Dienste. Ein Dienst (Service) ist eine abstrakte Beschreibung, die umgesetzt wird, indem dasselbe Container-Image mit derselben Konfiguration ein- oder mehrfach läuft [2]. Eine Web-App und ihre Datenbank sind zwei Dienste.
  3. Netze. Dienste sprechen über Netze miteinander, die eine IP-Route zwischen Containern herstellen [2]. Unsere Einschätzung: Innerhalb eines Compose-Projekts erreichen sich Dienste meist über den Dienstnamen, du tippst also selten Adressen.
  4. Volumes. Dienste speichern und teilen dauerhafte Daten in Volumes [2]. Das ist wichtig, weil ein Container wegwerfbar ist: docker compose down entfernt Container und Netze, anonyme Volumes aber standardmäßig nicht, und ein späteres up bindet sie nicht automatisch wieder ein. Docker rät, für Daten, die erhalten bleiben sollen, ausdrückliche Pfade als Bind-Mounts oder benannte Volumes zu nutzen [4].
  5. Configs und Secrets. Die Spezifikation kennt auch Configs, die als Dateien in Container eingebunden werden, und Secrets als Variante für sensible Daten [2]. Unsere Einschätzung: Halte echte Passwörter aus der Compose-Datei heraus, die du eincheckst.
  6. Projekte. Ein Projekt ist ein Einsatz der Anwendung. Sein Name gruppiert die Ressourcen und trennt sie von anderen Installationen, sodass dieselbe Datei unter verschiedenen Namen zweimal laufen kann [2].
  7. Prüfen vor dem Start. docker compose config führt deine Dateien zusammen, löst Variablen auf und gibt das Ergebnis aus, --quiet prüft nur [3]. docker compose down stoppt und entfernt Container und Netze des Projekts, mit -v entfernt es auch benannte Volumes aus der Datei [4]. Lies diese Option zweimal, bevor du sie nutzt.
  8. Veröffentlichte Ports. Ein ports-Eintrag macht einen Container auf dem Host erreichbar. Unsere Einschätzung: Schreibe 127.0.0.1:8080:80, wenn der Dienst nur vom Host selbst erreichbar sein soll, und setze für alles andere einen Reverse Proxy davor.

Ein Homelab-Beispiel

Das Bytearium-Homelab betreibt Rackserver (HPE ProLiant DL360 Gen9 und DL380 Gen10) und ein QNAP-NAS, Stand 14. bis 18.10.2026. Welche Container dort laufen, haben wir nicht erfasst und sagen deshalb nichts dazu. Ein allgemeines Beispiel für einen Minecraft-Java-Server mit dem Community-Image itzg/minecraft-server, dessen Dokumentation Port 25565, das Verzeichnis /data für dauerhafte Daten und die Einstellung EULA=TRUE zeigt [5]:

services:
  mc:
    image: itzg/minecraft-server
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
    volumes:
      - mc-data:/data
volumes:
  mc-data:

Mit EULA: "TRUE" stimmst du Mojangs Endnutzer-Lizenzvertrag zu, lies ihn also zuerst; diese Entscheidung liegt bei dir [5]. Wir haben hier keinen Image-Tag festgelegt, und der passende Tag hängt von deinen Versionsanforderungen ab (unbelegt). Führe docker compose config --quiet aus, dann docker compose up -d.

Prüfliste

  • Lege die Compose-Datei in einen eigenen Ordner mit klarem Projektnamen.
  • Führe vor jedem ersten Start docker compose config --quiet aus [3].
  • Speichere dauerhafte Daten in benannten Volumes oder Bind-Mounts [4].
  • Lege Image-Tags fest, sobald der Aufbau läuft, statt dem Standard zu folgen.
  • Halte Passwörter und Tokens aus der eingecheckten Datei heraus.
  • Veröffentliche nur Ports, die erreichbar sein müssen, und binde rein lokale an 127.0.0.1.
  • Lies docker compose down -v als „lösche meine benannten Volumes“ [4].
  • Sichere die Volumes, nicht nur die Datei.

Primärquellen

Diese Quellen sind die Grundlage der Seite. Das heißt nicht, dass jede Aussage einzeln nachgeprüft wurde; ob ein Prüfbeleg vorliegt, steht oben unter „Stand“. Einordnung und Prüfliste sind unsere eigene Arbeit.

Für diese Fassung liegt noch kein dokumentierter Prüfbeleg vor. Der Text stützt sich auf die genannten Quellen.

Entstehung: Bytearium erstellt diese Seiten mit Unterstützung von KI und verantwortet die Veröffentlichung. KI kann sich irren, deshalb nennen wir Quellen und Prüfstand offen.

  1. DockerDocker Compose
  2. DockerHow Compose works
  3. Dockerdocker compose config
  4. Dockerdocker compose down
  5. itzgDocker Minecraft Server, Intro

Auf dieser Seite gibt es keine Werbung und keine Partnerlinks.