Zurück zur Docker-Übersicht
Artikel 03 von 08

Erste Compose-Datei

Einen Dienst mit compose.yml beschreiben, starten, prüfen und wieder sauber stoppen.

Hier lernst du Docker Compose praktisch kennen und startest deine erste eigene compose.yml. Docker Compose ist der Punkt, an dem Docker für mich alltagstauglich wird. Ein Dienst steht nicht mehr als langer Befehl irgendwo in der Historie, sondern in einer Datei im Projektordner.

Diese Datei heißt meistens compose.yml. Sie beschreibt, welches Image gestartet wird, welche Ports nach außen gehen und welche Daten erhalten bleiben sollen.

Eine minimale compose.yml

Lege einen neuen Ordner an und erstelle darin diese Datei:

services: web: image: nginx:alpine ports: - "8080:80"

Der Servicename ist web. Das Image ist nginx:alpine. Die Portzeile bedeutet: Auf deinem Rechner ist Port 8080 erreichbar, im Container läuft Nginx auf Port 80.

Starten, prüfen, stoppen

Im Ordner mit der compose.yml reichen diese Befehle:

docker compose up -d docker compose ps docker compose logs -f web docker compose down

up -d startet im Hintergrund. ps zeigt den Zustand. logs zeigt Ausgaben. down stoppt und entfernt den Container, aber nicht automatisch deine benannten Volumes.

Mein Arbeitsstil

Merksatz

Wenn ich ein Setup öfter brauche, bekommt es eine Compose-Datei. Dann kann ich es später auf Linux, Mac oder Windows wieder starten, ohne den ursprünglichen Befehl suchen zu müssen.

Der nächste sinnvolle Schritt

Wenn du diesen Teil verstanden hast, sind diese Seiten die logisch nächsten Stationen:

Häufige Fragen

Was ist eine compose.yml?

Die compose.yml beschreibt deine Dienste, Images, Ports, Volumes und Umgebungsvariablen in einer lesbaren Datei.

Warum ist Compose besser als ein langer docker run Befehl?

Compose ist leichter zu wiederholen, zu sichern und später auf einen anderen Rechner zu übertragen.

Muss die Datei docker-compose.yml heißen?

Nein. compose.yml ist heute üblich und kurz. Docker Compose erkennt aber auch docker-compose.yml.

Aus eigener Praxis

In meinen eigenen Setups lege ich für jeden Dienst einen kleinen Projektordner mit compose.yml und .env an. Dadurch kann ich später noch nachvollziehen, welcher Port, welches Volume und welcher Dienstname wirklich verwendet wurde.