Für OrbStack & Docker Desktop · macOS

Alle Docker-Projekte gleichzeitig. Schluss mit dem Port-Chaos.

MultiDocker gibt jedem docker-compose-Projekt eine echte HTTPS-Domain auf deinem Mac — ohne je deine Compose-Dateien anzufassen. Ein zentraler Edge-Proxy, automatisches TLS, null Konflikte.

MultiDocker — Run every docker-compose project at once, no port wars | Product Hunt (externer Link)

Funktioniert mit OrbStack & Docker Desktop · macOS-nativ

zsh — mdocker

localhost:8081, :8082, :8083… kommt dir bekannt vor?

Ports jonglieren, fremde Compose-Dateien editieren, address already in use, kaputte Cookies auf localhost. MultiDocker ersetzt das alles durch projekt.coding9.test.

Ohne MultiDocker
$ docker compose up
Error: bind: address already in use
# fremde Compose-Datei editieren…
ports: "8082:80"  # welcher war das nochmal?
http://localhost:8083  # Cookie kaputt
# oauth-callback scheitert auf localhost
Mit MultiDocker
$ mdocker up shopware-shop
✓ port pre-flight ok · attached to edge
# deine Compose-Datei: unberührt
→ https://shopware-shop.coding9.test
✓ echtes Zertifikat · Cookies & Redirects funktionieren
✓ oauth-callbacks verhalten sich wie in Produktion

Drei Befehle. Das ist der ganze Workflow.

Projekt registrieren, starten, öffnen. Alles dazwischen passiert automatisch.

  1. 1
    mdocker init ./my-project

    Registrieren

    Projekt registrieren. Das Profil wird automatisch erkannt.

  2. 2
    mdocker up my-project

    Starten

    Starten. Ports entfernt, TLS-Labels gesetzt, Edge-Routing verdrahtet.

  3. 3
    mdocker open my-project

    Öffnen

    Öffnet https://my-project.coding9.test. Echtes Zertifikat, keine Warnung.

Ein Edge. Jedes Projekt hängt sich dran.

Ein einziger Traefik v3 auf Port 80/443 routet Hostnamen zu deinen Containern über ein geteiltes Docker-Netz. dnsmasq beantwortet *.test, mkcert macht’s vertrauenswürdig, Mailcatcher fängt alle Mails ab.

MultiDocker edge architecture A browser on the macOS host asks the local dnsmasq resolver, configured through /etc/resolver/dev.test, for any *.dev.test hostname and gets 127.0.0.1 back. The browser then speaks HTTPS on port 443 to a single Traefik v3 edge router that terminates TLS with a mkcert wildcard certificate. Traefik and every project container share one Docker network called multi-docker-edge, so Traefik routes each hostname to the matching project container — acme-shop, aurora, orbit-api — and to Mailcatcher on mail.dev.test. A docker-socket-proxy gives Traefik read-only access to the Docker API. The original docker-compose.yml is never edited: MultiDocker renders a separate override file that removes host port mappings with Compose's !reset tag, joins the shared edge network and adds the Traefik labels. HOST · macOS Browser https://acme-shop.dev.test 1 · DNS dnsmasq /etc/resolver/dev.test *.dev.test → 127.0.0.1 2 · HTTPS :443 DOCKER NETWORK · multi-docker-edge Traefik v3 :80 / :443 from host wildcard cert · mkcert 3 · Host header → router docker-socket-proxy Docker API · read-only discovers labels acme-shop acme-shop.dev.test profile: shopware-dockware aurora aurora.dev.test profile: strapi-next orbit-api orbit-api.dev.test profile: generic Mailcatcher mail.dev.test !reset docker-compose.yml stays untouched MultiDocker never edits your compose file. It renders a separate override next to it: host ports out, edge network in, Traefik labels on. services: web: ports: !reset []

Architektur-Diagramm. Architektur-Diagramm: Der Browser löst *.test über dnsmasq auf, Anfragen treffen einen einzigen Traefik-Edge auf 80/443, der über ein geteiltes Docker-Netz zu jedem Projekt-Container routet; Mailcatcher und ein docker-socket-proxy sitzen neben dem Edge.

  • dnsmasq: Beantwortet jeden *.test-Hostnamen lokal — keine /etc/hosts-Einträge.
  • Traefik v3 Edge: Ein Proxy auf 80/443 routet Hostnamen zum richtigen Container.
  • mkcert: Lokal vertrauenswürdige Zertifikate, damit HTTPS keine Warnung zeigt.
  • Mailcatcher: Fängt alle ausgehenden SMTP-Mails in einer geteilten Inbox.

Deine ursprüngliche Compose-Datei wird nie angefasst — eine separate Override-Datei nutzt Composes !reset, um Host-Ports zu entfernen.

  • dnsmasq Beantwortet jeden *.test-Hostnamen lokal — keine /etc/hosts-Einträge.
  • Traefik v3 Edge Ein Proxy auf 80/443 routet Hostnamen zum richtigen Container.
  • mkcert Lokal vertrauenswürdige Zertifikate, damit HTTPS keine Warnung zeigt.
  • Mailcatcher Fängt alle ausgehenden SMTP-Mails in einer geteilten Inbox.

Alles, um lokal wie in Produktion zu arbeiten.

Ein kompletter lokaler Edge-Stack, eine editierbare Profil-Engine und ein Werkzeugkasten für die lästigen Dinge.

  • Echte Domains, echtes TLS

    Jedes Projekt bekommt name.test über HTTPS via mkcert — vertrauenswürdig, ohne Browser-Warnung.

  • Null Port-Konflikte

    Ein Preflight-Check entfernt Host-Ports und remappt Kollisionen automatisch.

  • Fasst deine Compose-Datei nie an

    Eine Override-Engine erzeugt eine separate Datei mit Composes !reset — deine Originale bleiben unberührt.

  • Automatische Profil-Erkennung

    Erkennt Shopware/Dockware, Strapi+Next, Laravel/Symfony u.a.; generisches Fallback-Profil für alles andere.

  • AI-Terminals pro Projekt

    Claude Code, Copilot oder eine Shell in einer sandboxed, projekt-eigenen tmux-Session starten.

  • Komplettes Datenbank-Toolkit

    Dump, Snapshot, Restore, Shell oder in TablePlus öffnen — Dialekt automatisch erkannt.

  • Öffentlichen Demo-Link teilen

    Ein Befehl öffnet einen Cloudflare-Tunnel — sofortige Kunden-Demo, kein Account.

  • Zentrales Mail-Catching

    Alle ausgehenden SMTP-Mails landen in einer Mailcatcher-Inbox unter mail.<domain>.

  • Git auf einen Blick

    Branch, Dirty-Counts, ahead/behind, Stashes und Worktrees pro Projekt — rein lokal.

  • Health & Stats

    Aggregierte Edge-/Service-/HTTP-Health plus Live-Ressourcen der Container.

  • Editierbare Profile

    YAML-Templates fürs Routing einsehen, validieren und überschreiben.

  • Native Mac-App

    Ein SwiftUI-Frontend über derselben Engine — oder bleib im CLI. Deine Wahl.

Die Teile, zu denen du täglich greifst.

Drei Features, die MultiDocker weniger nach Rohrleitung und mehr nach Superkraft anfühlen lassen.

AI-Terminals

Claude Code oder Copilot starten — pro Projekt isoliert.

Projekt-eigene tmux-Sessions mit Sandbox-Schalter. Sie überleben den App-Neustart und docken in der nativen App wieder an.

Native App — Terminal-Panel mit projekt-eigenen AI-Sessions.
mdocker terminal new shopware-shop --agent claude✓ tmux session created · sandbox: on✓ attached · scoped to shopware-shopmdocker terminal listshopware-shop claude ● livestrapi-site shell ● live
Native App — Terminal-Panel mit projekt-eigenen AI-Sessions.

Datenbank-Toolkit

Snapshot, Restore und DB öffnen — mit einem Befehl.

Dialekt-Erkennung für MySQL, Postgres, Redis und Mongo. Fertigen Connection-String kopieren oder direkt in TablePlus öffnen.

Terminal — db snapshot, dann inspect mit fertigem Connection-String zum Kopieren.
mdocker db snapshot shopware-shop✓ mysql detected · snapshot savedmdocker inspect shopware-shopmysql://root:[email protected]:3306/shop↳ press o to open in TablePlus
Terminal — db snapshot, dann inspect mit fertigem Connection-String zum Kopieren.

Demo-Tunnel

Ein laufendes Projekt in Sekunden per öffentlichem Link teilen.

mdocker share öffnet einen Cloudflare-Quick-Tunnel — kein Account, keine Config. Ideal für die schnelle Kunden-Demo. Räumt bei down automatisch auf.

Terminal — share gibt eine öffentliche trycloudflare.com-URL aus.
mdocker share strapi-site✓ cloudflare quick tunnel up→ https://brave-otter-42.trycloudflare.com↳ public link · auto-cleans on `mdocker down`
Terminal — share gibt eine öffentliche trycloudflare.com-URL aus.

Weniger Setup-Reibung. Mehr Flow.

Die alltäglichen Gewinne, die du ab dem ersten registrierten Projekt spürst.

  • Kontext wechseln, ohne Ports zu wechseln

    Zwei Kundenprojekte nebeneinander öffnen und nie wieder überlegen, welcher Port zu welchem gehört.

  • Ein Projekt in Sekunden onboarden

    init + up und es läuft — kein Compose-Editieren von Hand, keine Suche nach freien Ports.

  • Lokal verhält sich wie Produktion

    Echte HTTPS-Domains bedeuten: Cookies, Redirects, OAuth-Callbacks und absolute URLs verhalten sich wie in Produktion.

  • Deine Repos bleiben sauber

    Weil Compose-Dateien nie angefasst werden, landet nichts von MultiDocker in einem Commit oder Diff.

  • Demo ohne Deploy

    Work-in-progress ohne Staging-Server per öffentlichem Link zeigen.

Native macOS-App

Lieber klicken? Es gibt eine native Mac-App.

Ein SwiftUI-Frontend über derselben Engine — Projektliste, Health-Cards, Git-Card, eingebettete Terminals. Gleiche Power, ohne Verben auswendig zu lernen.

Native macOS-App von MultiDocker: links die Projektliste, rechts das ausgewählte Projekt mit Live-URL, Health- und Git-Card, Hostnames und Routing.
MultiDocker.app — Projektliste, Health- & Git-Cards, Hostnames und Routing.
  • Projektliste

    Jedes registrierte Projekt mit Live-Status und Ein-Klick-Öffnen.

  • Health- & Git-Cards

    Service-Health, Branch, Dirty-Counts und ahead/behind auf einen Blick.

  • Eingebettete Terminals

    Dieselben projekt-eigenen AI-Sessions, direkt ins Fenster angedockt.

Auf der Roadmap

Wohin MultiDocker steuert. Grobe Reihenfolge, keine Versprechen.

  1. Ausgeliefert

    Git-Info & Demo-Tunnels

    Projekt-eigene Git-Card und öffentliche Demo-Links mit einem Befehl — schon in deinen Händen.

  2. Als Nächstes

    Branch-Umgebungen

    Ein Git-Worktree wird zur eigenen Instanz: branch.projekt.test mit geklontem DB-Snapshot.

  3. Als Nächstes

    Reicheres Git-Tooling

    PR-Übersicht via gh, Sidebar-Branch-/Dirty-Badges, Remote-Sichtbarkeit.

  4. Später

    Geschützte & stabile Tunnels

    Passwortgeschützte Demo-Links und Named Tunnels mit stabiler URL.

  5. Später

    Integrations-Framework

    Issue-Tracker anbinden — Ticket klicken, Branch + Subdomain + AI-Terminal-Session entsteht.

Habt ihr Ideen? Schreibt uns auf coding9.de

MultiDocker herunterladen

Kostenlos während der Beta. DMG laden, in Programme ziehen, Setup ausführen — fertig.

Für macOS laden

macOS 14 oder neuer · funktioniert mit OrbStack und Docker Desktop

Beim ersten Start: Rechtsklick auf die App und „Öffnen" wählen — der Beta-Build ist noch nicht notarisiert.

MultiDocker wird unentgeltlich bereitgestellt, die Nutzung erfolgt auf eigenes Risiko. Es besteht kein Anspruch auf Support, Wartung, Updates, Fehlerbehebung oder Verfügbarkeit; wir können das Angebot jederzeit ändern oder einstellen. Mit dem Download erkennen Sie unsere Nutzungsbedingungen an.

Fragen oder Feedback? Kontakt auf coding9.de