Docker Compose-generator

Vad som körs i den här stacken

Nästa

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

    Ge varje tjänst ett namn och en image och ange sedan portmappningar, volymer, miljövariabler och omstartspolicy. Två starttjänster är redan ifyllda och startar som de är.

  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

    Granska den genererade YAML-filen: portmappningar står inom citattecken, varje namngiven volym deklareras i slutet av filen och version-nyckeln utelämnas, precis som den moderna Compose-specifikationen förväntar sig.

  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. Formuläret täcker image, portar, volymer, miljövariabler och omstartspolicy, och deklarerar varje namngiven volym som dina tjänster monterar, precis som Compose kräver. Nätverk och health checks skriver du in för hand i den genererade YAML-filen.

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