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.ymlumoż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

