Docker Compose-generator

Een docker-compose.yml met de hand schrijven betekent dat je de exacte inspringing onthoudt, elke poorttoewijzing tussen aanhalingstekens zet en weet welke versietekenreeks jouw Compose-programma begrijpt. Deze generator laat je services definiëren met eenvoudige velden: een naam, een image, host:container-poorttoewijzingen en volumes. Hij levert een geldig YAML-bestand volgens de moderne Compose-specificatie (zonder versiesleutel) met verstandige standaardwaarden.

Zo bouw je een Compose-bestand

  1. 1

    Services toevoegen

    Geef elke service een naam, een image, host:container-poorttoewijzingen en volumes. Er staan al twee voorbeeldservices ingevuld.

  2. 2

    Rijen aanpassen of verwijderen

    Bewerk elk veld rechtstreeks, voeg met de knop + Service een service toe of verwijder een rij die je niet nodig hebt.

  3. 3

    Het gegenereerde YAML controleren

    De preview werkt bij terwijl je typt: poorttoewijzingen krijgen aanhalingstekens en de versiesleutel wordt weggelaten, zoals de moderne Compose-specificatie verwacht.

  4. 4

    Het bestand kopiëren

    Kopieer de gegenereerde docker-compose.yml en plak hem in de hoofdmap van je project.

De moderne Compose-specificatie

Compose V2 (de plug-in die bij Docker Desktop en moderne Docker Engine hoort) volgt de Compose Specification. De sleutel version: is verouderd; de generator laat hem weg. De sleutels op het hoogste niveau zijn services, networks, volumes, configs en secrets.

Anatomie van een service

Een productiegerichte service ziet er zo uit:

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 of benoemd volume

  • Bind mount (./app:/var/www) verbindt de container met een pad op de host; ideaal voor lokale ontwikkeling omdat wijzigingen direct zichtbaar zijn.
  • Benoemd volume (pgdata:/var/lib/postgresql/data) wordt door Docker beheerd en blijft bestaan los van elk hostpad; de juiste keuze voor databases en alles wat je niet per ongeluk met rm -rf wilt verwijderen.
  • Anoniem volume - vermijd. Het overleeft herstarts maar verdwijnt zonder waarschuwing bij docker compose down -v.

Netwerken

Standaard maakt Compose een netwerk met de naam van het project en verbindt het elke service daarmee. Expliciete netwerken declareren is nuttig wanneer:

  • je een database wilt isoleren van een publiek bereikbare service;
  • je een bridge met een eigen subnet nodig hebt om aan te sluiten op bestaande infrastructuur;
  • je containers wilt koppelen aan een bestaand extern netwerk (external: true).

Veelgemaakte fouten om te vermijden

  • Conflicten met de versiesleutel. version: "3.8" bovenaan voorkomt dat nieuwere functies zoals start_interval van de healthcheck werken in oud Compose; de generator laat de versiesleutel weg.
  • Aanhalingstekens bij poorten. 8080:80 wordt in sommige randgevallen als YAML in grondtal 60 gelezen; de generator zet poorttoewijzingen altijd tussen aanhalingstekens.
  • Ingesloten geheimen. Geheimen die direct in compose.yml staan, belanden in git. Bewaar ze in een env_file of in de geheimenopslag van het platform.
  • depends_on zonder voorwaarde. Een gewoon depends_on: [db] wacht tot de container start, niet tot de service klaar is. Gebruik condition: service_healthy en voeg een healthcheck toe aan de afhankelijkheid.

Veelgestelde vragen

Op de huidige Compose Specification (afgestemd op Docker Compose V2). Het bestand laat de sleutel version: weg, zo worden moderne Compose-bestanden geschreven. Het werkt met Docker Compose V2.22 en nieuwer.

In deze versie niet via het formulier. De generator richt zich op servicedefinities met image, poorten en volumes. Je kunt netwerken, omgevingsvariabelen, healthchecks en andere sleutels met de hand aan het gegenereerde YAML toevoegen voordat je het gebruikt.

Nee, dit hulpmiddel richt zich op compose.yml. Voor Dockerfiles gebruik je de Dockerfile-generator, die de keuze van het basis-image en de COPY/RUN-volgorde voor vijf stacks verzorgt.

Nee. De servicedefinities dienen alleen om het YAML op deze pagina te bouwen. Ze worden niet opgeslagen, geüpload of gedeeld.

Gerelateerde tools

Tool beschikbaar in andere talen