Docker Compose – efektywne zarządzanie wieloma kontenerami

Docker Compose to narzędzie umożliwiające uruchamianie i zarządzanie wieloma kontenerami jednocześnie. W przeciwieństwie do pojedynczych instancji Dockera, Compose pozwala na definiowanie całego środowiska aplikacji w jednym pliku konfiguracyjnym, co ułatwia skalowanie i automatyzację procesów. Współczesne aplikacje rzadko działają jako pojedyncze kontenery – zazwyczaj wymagają dodatkowych usług, takich jak bazy danych czy serwery WWW. Ręczne zarządzanie nimi jest czasochłonne i podatne na błędy. Dzięki Docker Compose można tworzyć, uruchamiać i kontrolować złożone środowiska w prosty i przejrzysty sposób.


Czym jest Docker Compose i dlaczego warto go używać?

Docker Compose umożliwia definiowanie i uruchamianie wielu kontenerów jako jednej aplikacji. Kontenery te działają w izolacji, ale mogą się ze sobą komunikować, jeśli zostaną połączone w ramach jednej sieci. Jest to kluczowe rozwiązanie dla aplikacji wykorzystujących architekturę mikroserwisową.

Podstawowe zalety Docker Compose:

  • Łatwe zarządzanie – zamiast uruchamiać kontenery pojedynczo, można uruchomić wszystkie usług jednym poleceniem.
  • Automatyczne łączenie kontenerów – brak konieczności ręcznej konfiguracji sieci między usługami.
  • Przenośność – plik docker-compose.yml umożliwia łatwe przenoszenie konfiguracji na inne środowiska.
  • Łatwość skalowania – prosta zmiana liczby instancji usług w konfiguracji.

Najważniejsze polecenia Docker Compose

Poniżej przedstawiono kilka kluczowych komend, które umożliwiają zarządzanie kontenerami:

  • docker-compose up – buduje i uruchamia wszystkie usługi zdefiniowane w pliku.
  • docker-compose start – uruchamia kontenery, które zostały wcześniej zbudowane.
  • docker-compose down – zatrzymuje i usuwa kontenery oraz sieci.
  • docker-compose stop – zatrzymuje kontenery bez ich usuwania.
  • docker-compose build – buduje kontenery, ale ich nie uruchamia.

Pełna lista komend jest dostępna w dokumentacji Docker Compose.


Praktyczne zastosowanie Docker Compose

Rozważmy przykład aplikacji e-commerce składającej się z:

  • Serwera WWW Apache, który obsługuje stronę internetową.
  • Bazy danych MySQL, w której przechowywane są informacje o użytkownikach.

Zamiast ręcznie uruchamiać te usługi, można wykorzystać Docker Compose:

Tworzenie sieci i uruchamianie kontenerów ręcznie

docker network create ecommerce
docker run -p 80:80 --name webserver --net ecommerce webserver
docker run --name database --net ecommerce mysql:latest

Takie podejście wymaga ręcznej konfiguracji i jest nieefektywne, zwłaszcza gdy liczba usług rośnie.

Automatyczne uruchamianie usług z Docker Compose

Dzięki plikowi docker-compose.yml wszystkie usługi można uruchomić jednym poleceniem.

Przykładowy plik docker-compose.yml

version: '3.3'
services:
  web:
    build: ./web
    networks:
      - ecommerce
    ports:
      - '80:80'

  database:
    image: mysql:latest
    networks:
      - ecommerce
    environment:
      - MYSQL_DATABASE=ecommerce
      - MYSQL_USERNAME=root
      - MYSQL_ROOT_PASSWORD=helloworld
    
networks:
  ecommerce:

Dzięki temu rozwiązaniu:

  • Usługi są połączone w jednej sieci.
  • Konfiguracja może być łatwo przeniesiona na inne środowisko.
  • Zarządzanie aplikacją staje się prostsze i bardziej efektywne.

Podsumowanie

Docker Compose znacząco upraszcza zarządzanie aplikacjami składającymi się z wielu usług. Umożliwia on ich automatyczne uruchamianie, konfigurację oraz łączenie w sieci, eliminując potrzebę ręcznego sterowania każdym kontenerem osobno. Dzięki temu rozwiązaniu można w szybki i efektywny sposób wdrażać i skalować aplikacje w różnych środowiskach. Przedstawiony przykład e-commerce pokazuje, jak łatwo można wykorzystać Compose do tworzenia i zarządzania złożonymi aplikacjami. Dalsza eksploracja dokumentacji Docker Compose pozwoli na pełne wykorzystanie jego potencjału.

źródło: https://tryhackme.com/room/introtodockerk8pdqk dostęp 15.03.2025