Docker Compose-generator

Att skriva en docker-compose.yml för hand innebär att komma ihåg exakt indragning, sätta citattecken runt varje portmappning och veta vilken versionssträng ditt Compose-program förstår. Med den här generatorn definierar du tjänster med enkla fält: ett namn, en image, host:container-portmappningar och volymer. Resultatet blir en giltig YAML-fil enligt moderna Compose-specifikationen (utan versionsnyckel) med genomtänkta standardvärden.

Så bygger du en Compose-fil

  1. 1

    Lägg till tjänster

    Ange ett namn, en image, host:container-portmappningar och volymer för varje tjänst. Två starttjänster är redan ifyllda.

  2. 2

    Justera eller ta bort rader

    Redigera valfritt fält direkt, lägg till en tjänst med knappen + Service eller ta bort en rad du inte behöver.

  3. 3

    Kontrollera YAML-filen

    Förhandsvisningen uppdateras medan du skriver: portmappningar sätts inom citattecken och versionsnyckeln utelämnas, enligt moderna Compose-specifikationen.

  4. 4

    Kopiera filen

    Kopiera den genererade docker-compose.yml och klistra in den i projektets rotmapp.

Den moderna Compose-specifikationen

Compose V2 (plugin-programmet som följer med Docker Desktop och moderna Docker Engine) följer Compose Specification. Nyckeln version: är avskaffad; generatorn utelämnar den. Nycklarna på översta nivån är services, networks, volumes, configs och secrets.

Tjänstens anatomi

En produktionsnära tjänst ser ut så här:

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

Volymer: bind mount eller namngiven volym

  • Bind mount (./app:/var/www) knyter containern till en sökväg på värden; utmärkt för lokal utveckling eftersom ändringar syns direkt.
  • Namngiven volym (pgdata:/var/lib/postgresql/data) hanteras av Docker och består oavsett värdens sökvägar; rätt val för databaser och allt du inte vill radera av misstag med rm -rf.
  • Anonym volym - undvik. Den överlever omstarter men försvinner utan varning vid docker compose down -v.

Nätverk

Som standard skapar Compose ett nätverk med projektets namn och ansluter varje tjänst till det. Att deklarera explicita nätverk är användbart när:

  • du vill isolera en databas från en tjänst som är öppen för allmänheten;
  • du behöver en brygga med ett eget subnät för att anpassa dig till befintlig infrastruktur;
  • du vill koppla containrar till ett befintligt externt nätverk (external: true).

Vanliga misstag att undvika

  • Versionsnyckelkonflikter. version: "3.8" överst hindrar nyare funktioner som healthcheckens start_interval från att fungera i gammalt Compose; generatorn utelämnar versionsnyckeln.
  • Citattecken vid portar. 8080:80 tolkas i vissa gränsfall som YAML i bas 60; generatorn sätter alltid portmappningar inom citattecken.
  • Hårdkodade hemligheter. Hemligheter som skrivs direkt i compose.yml hamnar i git. Förvara dem i en env_file eller i plattformens hemlighetsarkiv.
  • depends_on utan villkor. Ett vanligt depends_on: [db] väntar på att containern startar, inte på att tjänsten är redo. Använd condition: service_healthy och lägg till en healthcheck på beroendet.

Vanliga frågor

Den aktuella Compose-specifikationen (i linje med Docker Compose V2). Filen utelämnar nyckeln version:, så skrivs moderna Compose-filer. Den fungerar med Docker Compose V2.22 och nyare.

Inte via formuläret i den här versionen. Generatorn fokuserar på tjänstedefinitioner med image, portar och volymer. Du kan lägga till nätverk, miljövariabler, healthchecks och andra nycklar i den genererade YAML-filen för hand innan du använder den.

Nej, verktyget fokuserar på compose.yml. För Dockerfiler, använd Dockerfile-generatorn, som hanterar valet av basimage och COPY/RUN-ordningen för fem stackar.

Nej. Tjänstedefinitionerna används bara för att bygga YAML-filen på den här sidan. De sparas inte, laddas inte upp eller delas.

Relaterade verktyg

Verktyget finns på andra språk