Docker-Compose-Generator

Eine docker-compose.yml von Hand zu schreiben bedeutet, sich die exakte Einrückung zu merken, jeden Port-Mapping in Anführungszeichen zu setzen und zu wissen, welche Versionszeichenfolge Ihre Compose-Binärdatei versteht. Mit diesem Generator definieren Sie Services über einfache Felder: einen Namen, ein Image, Host:Container-Port-Mappings und Volumes. Das Ergebnis ist eine gültige YAML-Datei nach dem modernen Compose-Spec (ohne Versionsschlüssel) mit sinnvollen Voreinstellungen.

So bauen Sie eine Compose-Datei

  1. 1

    Services hinzufügen

    Legen Sie für jeden Service einen Namen, ein Image, Host:Container-Port-Mappings und Volumes fest. Zwei Beispiel-Services sind bereits ausgefüllt.

  2. 2

    Zeilen anpassen oder entfernen

    Bearbeiten Sie jedes Feld direkt, fügen Sie mit der Schaltfläche + Service einen weiteren Service hinzu oder entfernen Sie eine Zeile, die Sie nicht brauchen.

  3. 3

    Das generierte YAML prüfen

    Die Vorschau aktualisiert sich beim Tippen: Port-Mappings werden in Anführungszeichen gesetzt und der Versionsschlüssel weggelassen, wie es das moderne Compose-Spec verlangt.

  4. 4

    Die Datei kopieren

    Kopieren Sie die generierte docker-compose.yml und fügen Sie sie in das Stammverzeichnis Ihres Projekts ein.

Das moderne Compose-Spec

Compose V2 (das Plugin, das mit Docker Desktop und moderner Docker Engine ausgeliefert wird) folgt der Compose Specification. Der Schlüssel version: ist veraltet; der Generator lässt ihn weg. Die Schlüssel der obersten Ebene sind services, networks, volumes, configs und secrets.

Anatomie eines Services

Ein produktionsnaher Service sieht so aus:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Volumes: Bind-Mount vs. benanntes Volume

  • Bind-Mount (./app:/var/www) bindet den Container an einen Pfad auf dem Host; ideal für die lokale Entwicklung, weil Änderungen sofort wirken.
  • Benanntes Volume (pgdata:/var/lib/postgresql/data) wird von Docker verwaltet und bleibt unabhängig von jedem Host-Pfad bestehen; die richtige Wahl für Datenbanken und alles, was Sie nicht versehentlich mit rm -rf löschen möchten.
  • Anonymes Volume - vermeiden. Es übersteht Neustarts, verschwindet aber bei docker compose down -v ohne Warnung.

Netzwerke

Standardmäßig erstellt Compose ein nach dem Projekt benanntes Netzwerk und verbindet jeden Service damit. Explizite Netzwerke zu deklarieren ist sinnvoll, wenn:

  • Sie eine Datenbank von einem öffentlich erreichbaren Service isolieren möchten.
  • Sie eine Bridge mit einem eigenen Subnetz brauchen, um sich an die bestehende Infrastruktur anzupassen.
  • Sie Container an ein bestehendes externes Netzwerk anschließen möchten (external: true).

Häufige Fehler, die Sie vermeiden sollten

  • Konflikte beim Versionsschlüssel. version: "3.8" ganz oben verhindert, dass neuere Funktionen wie start_interval des Healthchecks in altem Compose funktionieren; der Generator lässt den Versionsschlüssel weg.
  • Anführungszeichen bei Ports. 8080:80 wird in manchen Randfällen als YAML-Basis-60 interpretiert; der Generator setzt Port-Mappings immer in Anführungszeichen.
  • Hartkodierte Geheimnisse. Direkt in compose.yml geschriebene Geheimnisse landen im Git-Commit. Legen Sie sie in einer env_file oder im Geheimnisspeicher der Plattform ab.
  • depends_on ohne Bedingung. Ein simples depends_on: [db] wartet auf den Containerstart, nicht darauf, dass der Service bereit ist. Verwenden Sie condition: service_healthy und fügen Sie der Abhängigkeit einen Healthcheck hinzu.

Häufig gestellte Fragen

Auf die aktuelle Compose Specification (ausgerichtet an Docker Compose V2). Die Datei lässt den Schlüssel version: weg, so werden moderne Compose-Dateien geschrieben. Sie funktioniert mit Docker Compose V2.22 und neuer.

In dieser Version nicht über das Formular. Der Generator konzentriert sich auf Service-Definitionen mit Image, Ports und Volumes. Sie können dem generierten YAML vor der Verwendung von Hand Netzwerke, Umgebungsvariablen, Healthchecks und weitere Schlüssel hinzufügen.

Nein, dieses Werkzeug konzentriert sich auf compose.yml. Für Dockerfiles nutzen Sie den Dockerfile-Generator, der die Wahl des Basis-Images und die COPY/RUN-Reihenfolge für fünf Stacks übernimmt.

Nein. Die Service-Definitionen werden nur dazu verwendet, das YAML auf dieser Seite zu erzeugen. Sie werden nicht gespeichert, hochgeladen oder geteilt.

Verwandte Tools

Tool in anderen Sprachen verfügbar