Hier verstehst du Docker Ports, localhost und .env-Dateien, damit Webdienste zuverlässig erreichbar sind. Ein Container kann perfekt laufen und trotzdem von außen unsichtbar sein. Der Grund ist fast immer derselbe: der Port wurde nicht freigegeben oder du greifst auf die falsche Adresse zu.
Für lokale KI-Dienste ist das wichtig. Whisper, n8n oder Open WebUI laufen oft als Webdienst. Du willst sie im Browser oder per API erreichen, ohne jedes Mal zu raten, welcher Port gemeint ist.
Ports bewusst setzen
Die linke Zahl ist der Port auf deinem Rechner. Die rechte Zahl ist der Port im Container. Dieses Beispiel macht den Dienst unter http://localhost:8080 erreichbar:
services:
web:
image: nginx:alpine
ports:
- "8080:80"Wenn du später mehrere Dienste betreibst, bekommt jeder Dienst einen eigenen Host-Port: zum Beispiel 5678 für n8n, 3000 für Open WebUI oder 9001 für eine lokale Whisper-API.
Konfiguration in .env auslagern
Werte, die sich ändern können, lege ich gern in eine .env-Datei. Dann bleibt die Compose-Datei lesbar.
# .env
WEB_PORT=8080
# compose.yml
services:
web:
image: nginx:alpine
ports:
- "${WEB_PORT}:80"Was mir wichtig ist
Ich vergebe Ports bewusst und dokumentiere sie in der Compose-Datei oder in der .env. Das klingt klein, verhindert aber später viel Sucherei, wenn mehrere lokale Dienste parallel laufen.
Häufige Fragen
Warum ist mein Container im Browser nicht erreichbar?
Meist ist kein Port veröffentlicht oder du nutzt den falschen Host-Port. Prüfe ports in der compose.yml und docker compose ps.
Was bedeutet 8080:80 in Docker Compose?
Links steht der Port auf deinem Rechner, rechts der Port im Container. Du öffnest also localhost:8080.
Wofür ist eine .env-Datei gut?
Sie hält veränderbare Werte wie Ports, Pfade und Passwörter getrennt von der eigentlichen Compose-Struktur.