🐙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.