🐙Docker Compose visualisiert

Eine docker-compose.yml beschreibt ein ganzes Projekt: Services, Netze, Volumes und ihre Abhängigkeiten. Wähle ein Beispiel oder füge deine eigene Datei ein – sie wird mit dem npm-Paket „yaml“ im Browser geparst, zusammengeführt, geprüft und gezeichnet.

So laufen die Apps der „Visuellen Erklärungen“ auf dem Server: App und Datenbank im Compose-Netz, die DB ohne Host-Port, die App nur auf 127.0.0.1 – nginx auf dem Host leitet weiter. Das Override legt ein festes Subnetz fest.

🔍 Prüfung0 Fehler0 Warnungen0 Hinweise
  • ✅ Keine Auffälligkeiten gefunden.
Projekt „visualdemo“🌐 visualdemo_default · 10.89.51.0/24━ healthy━ fertig┅ gestartet
🖥️ HostPorts: gelb = alle Adressen · grün = an eine IP gebunden · ohne Port nur internWelle 1Welle 2healthy💾 db-datadbmariadb:11.4Netze: default📁 ./db/init:/docker-entrypoint-…🩺 healthcheck↻ unless-stoppedappvisualdemo:latestNetze: default127.0.0.1:3051→3000↻ unless-stopped
🚦 Startreihenfolge (topologisch sortiert)
  1. 1
    db
  2. 2
    app wartet auf db (healthy)

Stoppen (docker compose down) in umgekehrter Reihenfolge: app → db

▶ docker compose up -d
$ docker compose up -d

🧩Override-Dateien und Profile

💡 Automatisches Override
docker compose up liest docker-compose.yml und – falls vorhanden – docker-compose.override.yml. Einzelwerte werden ersetzt, environment/labels nach Schlüssel gemischt, ports angehängt, volumes nach Zielpfad ersetzt.
✅ Muster dieser Sammlung
Im Repository liegt nur die Basisdatei (Port auf 127.0.0.1). Auf dem Server legt ein nicht versioniertes Override ein festes Subnetz 10.89.x.0/24 fest, weil die Adresspools von Docker dort erschöpft sind. nginx auf dem Host leitet die Domain an den lokalen Port weiter.
💡 Mehrere Dateien explizit
docker compose -f compose.yml -f compose.prod.yml config zeigt das zusammengeführte Ergebnis – genau das, was dieser Visualizer berechnet.

🗝️Die wichtigsten Schlüssel

servicesDie Container des Projekts. Name = DNS-Name im Projektnetz.
image / buildFertiges Image laden oder aus einem Dockerfile bauen (beides: bauen und so benennen).
portsVeröffentlichte Ports – [IP:]HOST:CONTAINER. Ohne ports ist ein Dienst nur im Netz erreichbar.
depends_onStart-Reihenfolge, optional mit Bedingung: service_started, service_healthy, service_completed_successfully.
healthcheckPrüfbefehl + interval/timeout/retries/start_period – Grundlage für service_healthy.
networksEigene Netze; ohne Angabe landet jeder Service im Netz <projekt>_default.
volumesBenannte Volumes (oben deklariert) und Bind-Mounts (./pfad:/ziel).
restartno · always · on-failure[:n] · unless-stopped
profilesService startet nur, wenn das Profil aktiv ist (--profile oder COMPOSE_PROFILES).
${VAR:-std}Variablen aus Umgebung und .env – mit Standardwert.