Generator Docker Compose

Ręczne pisanie docker-compose.yml oznacza zapamiętanie dokładnego wcięcia, umieszczanie w cudzysłowie każdego mapowania portów oraz wiedzę, którą wersję pliku rozumie Twój program Compose. Ten generator pozwala definiować usługi za pomocą prostych pól: nazwy, obrazu, mapowań portów host:kontener oraz woluminów. Tworzy poprawny plik YAML zgodny z nowoczesną specyfikacją Compose (bez klucza wersji) i z rozsądnymi ustawieniami domyślnymi.

Jak zbudować plik Compose

  1. 1

    Dodaj usługi

    Dla każdej usługi podaj nazwę, obraz, mapowania portów host:kontener oraz woluminy. Dwie przykładowe usługi są już uzupełnione.

  2. 2

    Popraw lub usuń wiersze

    Edytuj dowolne pole bezpośrednio, dodaj kolejną usługę przyciskiem + Service albo usuń wiersz, którego nie potrzebujesz.

  3. 3

    Sprawdź wygenerowany YAML

    Podgląd aktualizuje się podczas pisania: mapowania portów są w cudzysłowie, a klucz wersji jest pomijany, zgodnie z nowoczesną specyfikacją Compose.

  4. 4

    Skopiuj plik

    Skopiuj wygenerowany docker-compose.yml i wklej go do katalogu głównego projektu.

Nowoczesna specyfikacja Compose

Compose V2 (wtyczka dostarczana z Docker Desktop i nowoczesnym Docker Engine) opiera się na Compose Specification. Klucz version: jest przestarzały; generator go pomija. Klucze najwyższego poziomu to services, networks, volumes, configs i secrets.

Anatomia usługi

Usługa zbliżona do produkcyjnej wygląda tak:

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

Woluminy: montaż bezpośredni vs nazwany

  • Montaż bezpośredni (./app:/var/www) łączy kontener ze ścieżką na hoście; świetny do lokalnego rozwoju, bo zmiany są widoczne od razu.
  • Wolumen nazwany (pgdata:/var/lib/postgresql/data) jest zarządzany przez Dockera i trwa niezależnie od ścieżek na hoście; właściwy wybór dla baz danych i wszystkiego, czego nie chcesz przypadkiem usunąć przez rm -rf.
  • Wolumen anonimowy - unikaj. Przetrwa restarty, ale znika bez ostrzeżenia po docker compose down -v.

Sieci

Domyślnie Compose tworzy sieć nazwaną od projektu i podłącza do niej każdą usługę. Deklarowanie jawnych sieci przydaje się, gdy:

  • chcesz odizolować bazę danych od usługi dostępnej publicznie;
  • potrzebujesz mostka z własną podsiecią, aby dopasować się do istniejącej infrastruktury;
  • chcesz podłączyć kontenery do istniejącej sieci zewnętrznej (external: true).

Częste błędy, których warto unikać

  • Konflikty klucza wersji. version: "3.8" na górze uniemożliwia nowszym funkcjom, takim jak start_interval w healthchecku, działanie w starym Compose; generator pomija klucz wersji.
  • Cudzysłowy przy portach. 8080:80 w niektórych przypadkach granicznych jest interpretowany jako YAML w systemie sześćdziesiątkowym (base-60); generator zawsze otacza mapowania portów cudzysłowem.
  • Wpisane na sztywno sekrety. Sekrety wpisane bezpośrednio do compose.yml trafiają do gita. Trzymaj je w env_file lub w magazynie sekretów platformy.
  • depends_on bez warunku. Zwykłe depends_on: [db] czeka na start kontenera, a nie na gotowość usługi. Użyj condition: service_healthy i dodaj healthcheck do zależności.

Najczęściej zadawane pytania

Na aktualną Compose Specification (zgodną z Docker Compose V2). Plik pomija klucz version:, tak pisze się nowoczesne pliki Compose. Działa z Docker Compose V2.22 i nowszymi wersjami.

W tej wersji nie przez formularz. Generator skupia się na definicjach usług z obrazem, portami i woluminami. Sieci, zmienne środowiskowe, healthchecki i inne klucze możesz dodać do wygenerowanego YAML ręcznie przed użyciem.

Nie, to narzędzie skupia się na compose.yml. Do plików Dockerfile użyj Generatora Dockerfile, który zajmuje się wyborem obrazu bazowego i kolejnością instrukcji COPY/RUN dla pięciu technologii.

Nie. Definicje usług służą wyłącznie do zbudowania YAML na tej stronie. Nie są zapisywane, wysyłane ani udostępniane.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach