Docker Compose: Dienste dauerhaft betreiben
Sobald ein Container mehr als eine Handvoll Optionen braucht — oder mehrere Dienste zusammenspielen —, wird der docker run-Befehl unhandlich. Docker Compose beschreibt dein Setup stattdessen in einer Datei: nachvollziehbar, versionierbar, mit einem Befehl startbar. Auf unseren Managed Servern ist das der empfohlene Weg für alles, was dauerhaft laufen soll.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Rootless Docker ist für deinen Benutzer freigeschaltet — siehe Rootless Docker: Grundlagen.
- Compose ist dabei:
docker compose versionmuss eine Version anzeigen. Falls nicht, Ticket öffnen — wir rüsten nach.
Schritt für Schritt
Abschnitt betitelt „Schritt für Schritt“- Leg ein Verzeichnis pro Projekt an, z. B.
mkdir -p ~/docker/cache && cd ~/docker/cache. - Erstelle die
compose.yaml— hier am Beispiel eines ValKey-Caches:services:valkey:image: valkey/valkey:8restart: unless-stoppedports:- "127.0.0.1:6379:6379"volumes:- valkey-data:/datavolumes:valkey-data: - Starte das Setup:
docker compose up -d - Prüfe den Zustand:
docker compose psunddocker compose logs -f - Für Updates:
docker compose pull && docker compose up -d— zieht neue Image-Versionen und startet nur, was sich geändert hat. - Stoppen ohne Daten zu verlieren:
docker compose down(Volumes bleiben erhalten).
Wenn etwas schiefläuft
Abschnitt betitelt „Wenn etwas schiefläuft“docker compose up meldet einen belegten Port
Abschnitt betitelt „docker compose up meldet einen belegten Port“Zwei Dienste wollen denselben lokalen Port — etwa zwei Projekte mit je einem ValKey auf 6379.
Lösung: Im zweiten Projekt einen anderen Host-Port mappen ("127.0.0.1:6380:6379") und die Anwendung auf diesen Port zeigen lassen.
Nach docker compose down sind Daten weg
Abschnitt betitelt „Nach docker compose down sind Daten weg“Der Dienst hat in den Container geschrieben statt in ein Volume — down entfernt Container samt Inhalt.
Lösung: Volume-Mapping ergänzen (siehe Beispiel) und die Daten neu aufbauen. Für Caches wie ValKey ist das verschmerzbar; für alles andere gilt: erst Volume, dann Betrieb.
Änderungen an der compose.yaml greifen nicht
Abschnitt betitelt „Änderungen an der compose.yaml greifen nicht“Compose wendet Änderungen erst beim nächsten up an.
Lösung: docker compose up -d erneut ausführen — Compose erkennt die Differenz und baut nur die betroffenen Container neu.
Verwandte Artikel
Abschnitt betitelt „Verwandte Artikel“- Rootless Docker: Grundlagen — die Basis-Befehle hinter Compose.
- ValKey/Redis als Cache betreiben — das Beispiel aus diesem Artikel in voller Länge.
- Dateien per SSH sichern — für den Blick auf deine Volume-Daten.
Du kommst nicht weiter?
Abschnitt betitelt „Du kommst nicht weiter?“Compose startet nicht oder das Setup verhält sich anders als beschrieben? Ticket im Kundencenter öffnen — schick die compose.yaml und die Ausgabe von docker compose logs mit.