Zum Inhalt springen

Edge- & Traefik-Logs lesen

Wenn eine Seite über ihre Domain nicht lädt, der Container aber klar läuft, liegt die Antwort meist in den Edge-Stack-Logs — konkret Traefik. So liest du sie.

Der schnellste Weg, direkt über das CLI:

Terminal window
mdocker edge logs -f

edge logs unterstützt --follow/-f, --since <duration>, --tail <n> und --json. Um einen einzelnen Service zu beobachten oder direkt zu Compose zu gehen:

Terminal window
# Alle Edge-Services, folgend
mdocker edge logs -f
# Nur Traefik, via docker compose
docker compose -f edge/compose.yml -p multi-docker-edge logs traefik -f

Bestätige zuerst, dass der Stack überhaupt läuft:

Terminal window
mdocker edge status
docker ps --filter "label=com.docker.compose.project=multi-docker-edge"

Du solltest vier Container sehen — traefik, mailcatcher, dns und docker-proxy. Wenn sie fehlen, ist das dein Problem: mdocker edge up.

Wenn Traefiks Provider nicht mit der Docker-API sprechen kann, entdeckt er nichts und jede Domain 404t. Auf OrbStack ist das der Version-Mismatch-Fall, für dessen Behebung der docker-socket-proxy existiert — die Logs zeigen den Provider beim gescheiterten Verbindungsaufbau oder mit API-Fehlern. Bestätige, dass docker-proxy läuft.

Wenn das Log ankommende Anfragen zeigt, aber keinen passenden Router, ist der Container des Projekts nicht gelabelt (oder nicht am Edge-Netz). Traefik läuft default-deny, also braucht ein Container traefik.enable=true plus die Host(...)-Regel aus seinem generierten Override. Rendere ihn neu:

Terminal window
mdocker rerender <name>

Lade dann neu und beobachte die Logs — du solltest jetzt sehen, dass der Router für den Hostnamen registriert ist.

Traefik terminiert TLS mit dem gemounteten Wildcard-Zertifikat. Fehler über das Zertifikat bedeuten meist, dass das Zertifikat den Hostnamen nicht abdeckt (eine tiefere Wildcard braucht ihre eigene SAN) oder die Zertifikatsdateien nicht gemountet sind. mdocker doctor verifiziert die Zertifikatsabdeckung; siehe DNS & TLS.

Wenn Traefik einen Router gematcht hat, aber das Backend nicht erreichen kann, ist der Ziel-Container unten oder lauscht auf einem anderen internen Port als das Label deklariert (loadbalancer.server.port). Prüfe, dass der Service läuft (mdocker health <name>) und dass der Port des Profils stimmt.

Eine schnelle Triage:

  1. mdocker edge status — läuft der Stack? Wenn nicht, ist das die Antwort.
  2. mdocker health <name> — laufen die Container des Projekts und ist das HTTP-Probing okay?
  3. Lade die Seite neu, während mdocker edge logs -f streamt — siehst du die Anfrage überhaupt bei Traefik ankommen?
    • Keine Anfrage im Log → DNS-/Resolver-Problem (der Browser kam nie zu Traefik). Siehe Häufige Probleme.
    • Anfrage, aber kein Router gematcht → Labels veraltet → mdocker rerender <name>.
    • Router gematcht, Backend-Fehler → der Projekt-Container ist unten oder auf dem falschen Port.

Bevor du in die Logs eintauchst, fängt mdocker doctor die infrastrukturellen Ursachen (Edge unten, fehlendes Netz, Zertifikat deckt die Domain nicht ab, Resolver inaktiv) in einem Rutsch. Greif zu den Logs, wenn Doctor grün ist, ein bestimmtes Projekt aber trotzdem nicht routet. Siehe mdocker doctor ausführen.