0Pricing
Docker & DevOps Fundamentals · Lekcja

Pisanie pliku Compose

Poznaj składnię YAML pliku `docker-compose.yml` do definiowania usług, sieci i wolumenów.

Pisanie pliku Compose to bezpłatna lekcja Docker & DevOps Fundamentals na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Docker & DevOps Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.

Plik Compose: plan aplikacji

Witamy w świecie tworzenia plików Docker Compose! Plik docker-compose.yml jest planem służącym do definiowania i uruchamiania aplikacji Docker składających się z wielu kontenerów.

Za pomocą składni YAML konfiguruje usługi, sieci i wolumeny aplikacji w jednym pliku.

Pisanie pliku Compose — ilustracja 1

YAML: szybkie przypomnienie

Pliki Docker Compose są zapisywane w formacie YAML (YAML Ain't Markup Language). To przyjazny dla człowieka standard serializacji danych.

  • Pary klucz-wartość: key: value
  • Listy: Elementy zaczynają się od łącznika (- item)
  • Wcięcia: Mają kluczowe znaczenie przy definiowaniu struktury i hierarchii. Używaj spacji, nie tabulatorów!

Klucz `version`

Każdy plik docker-compose.yml zaczyna się od klucza version. Określa on wersję formatu pliku Compose i pomaga Docker Compose zrozumieć, jak interpretować plik.

W przypadku większości nowoczesnych aplikacji zalecana jest wersja '3.8' lub podobna wersja '3.x'.

version: '3.8'

Definiowanie `services`

Sekcja services służy do definiowania poszczególnych kontenerów (usług), z których składa się aplikacja. Każda usługa reprezentuje jeden komponent, na przykład serwer WWW lub bazę danych.

W sekcji services wpisujesz każdą usługę pod wybraną przez siebie nazwą.

version: '3.8'
services:
  web:
    # Service configuration goes here
  database:
    # Another service's configuration

Usługi: `image` i `ports`

W definicji usługi image określa, którego obrazu Dockera należy użyć, na przykład nginx:latest. Klucz ports mapuje porty kontenera na porty hosta, umożliwiając dostęp z zewnątrz.

  • "80:80" mapuje port 80 hosta na port 80 kontenera.
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Usługa: `volumes`

Klucz volumes w obrębie usługi pozwala zamontować ścieżki z komputera hosta w kontenerze albo użyć nazwanych wolumenów do trwałego przechowywania danych.

W tym przykładzie lokalny katalog ./app jest montowany w ścieżce /usr/src/app wewnątrz kontenera.

version: '3.8'
services:
  app:
    image: my-node-app
    volumes:
      - ./app:/usr/src/app

Zmienne `environment` usługi

Użyj klucza environment, aby przekazać zmienne środowiskowe do kontenerów usługi. Jest to niezwykle ważne w przypadku konfiguracji, która może zmieniać się między środowiskami (np. parametrów połączenia z bazą danych).

Zmienne można określić jako pary klucz-wartość lub w formie listy.

version: '3.8'
services:
  backend:
    image: my-api
    environment:
      - DATABASE_URL=postgres://user:pass@host:5432/db
      - NODE_ENV=development

Elementy najwyższego poziomu `networks` i `volumes`

Oprócz definiowania ich w ramach usług można także zadeklarować niestandardowe nazwane wolumeny i sieci na najwyższym poziomie pliku docker-compose.yml.

Pozwala to tworzyć bardziej uporządkowane i wielokrotnego użytku definicje przechowywania danych oraz komunikacji między kontenerami.

version: '3.8'
services:
  # ... service definitions ...

networks:
  my_app_network:
    # custom network configuration

volumes:
  db_data:
    # named volume configuration

Połączenie wszystkich elementów

Oto niewielki przykład łączący poznane informacje. Definiuje on usługę internetową i usługę bazy danych, korzystając z obrazu, portów oraz nazwanego wolumenu.

Proszę zwrócić uwagę, jak wcięcia tworzą strukturę.

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_content:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret

volumes:
  web_content:
  db_data:

Sprawdzanie pliku Compose

Który z poniższych fragmentów YAML poprawnie definiuje usługę Docker Compose o nazwie „api”, korzystającą z obrazu „myapi:1.0” i udostępniającą port kontenera 3000 na porcie hosta 8080?

Podsumowanie: najważniejsze elementy pliku Compose

Świetnie! Poznali Państwo podstawy tworzenia pliku docker-compose.yml.

  • Plik zaczyna się od elementu version.
  • Element services definiuje komponenty aplikacji.
  • Każda usługa korzysta z elementu image, może udostępniać ports, używać volumes do utrwalania danych oraz ustawiać zmienne environment.
  • Elementy najwyższego poziomu networks i volumes umożliwiają zaawansowaną konfigurację.

Opanowanie tej struktury YAML jest kluczowe do orkiestracji aplikacji składających się z wielu kontenerów!

Często zadawane pytania

Czy lekcja „Pisanie pliku Compose” jest bezpłatna?

Tak — pełny tekst „Pisanie pliku Compose” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Docker & DevOps Fundamentals, przejdź na CoddyKit PRO. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.

Co nauczysz się w „Pisanie pliku Compose”?

Poznaj składnię YAML pliku `docker-compose.yml` do definiowania usług, sieci i wolumenów. Ćwiczysz Docker & DevOps Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Docker & DevOps Fundamentals?

Nie wymagamy żadnego doświadczenia. Docker & DevOps Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Pisanie pliku Compose”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Docker & DevOps Fundamentals?

Tak. Każda lekcja Docker & DevOps Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym jest Docker Compose?
  2. Pisanie pliku Compose
  3. Wdrażanie aplikacji wielousługowych
  4. Zmienne środowiskowe i pliki .env
← Powrót do Docker & DevOps Fundamentals