Docker Compose to narzędzie stworzone przez Docker, Inc., które umożliwia definicję i zarządzanie wieloma kontenerami Docker jako jedną aplikację. Pozwala deweloperom na konfigurowanie i uruchamianie wielu kontenerów, usług i sieci w sposób spójny i prosty. Docker Compose używa plików YAML do zdefiniowania całego środowiska aplikacji, w tym konfiguracji kontenerów, sieci, zmiennych środowiskowych, portów itp.
Główne cechy i funkcje Docker Compose:
- Jednolity plik konfiguracyjny: Wszystkie informacje potrzebne do skonfigurowania i uruchomienia aplikacji są zawarte w jednym pliku YAML, co ułatwia utrzymanie spójności między różnymi środowiskami.
- Wielokontenerowe środowiska: Docker Compose umożliwia definiowanie wielu kontenerów w jednym pliku konfiguracyjnym. To pozwala na łatwe zarządzanie wielokomponentowymi aplikacjami.
- Definiowanie usług: Deweloperzy mogą zdefiniować różne usługi w pliku Docker Compose, takie jak bazy danych, serwery aplikacyjne, proxy, itp. Każda usługa jest zazwyczaj reprezentowana przez oddzielny kontener.
- Zarządzanie sieciami: Docker Compose pozwala na definiowanie niestandardowych sieci, co umożliwia izolowanie i zarządzanie komunikacją między kontenerami.
- Prosta komunikacja między kontenerami: Kontenery w ramach jednej aplikacji, zdefiniowanej za pomocą Docker Compose, mogą łatwo komunikować się ze sobą, korzystając z nazw serwisów jako hostname’ów.
- Skalowanie usług: Docker Compose umożliwia łatwe skalowanie usług w ramach aplikacji. Można określić, ile instancji danej usługi ma zostać uruchomionych.
Przykład prostego pliku Docker Compose:
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
app:
image: my-app:latest
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: example
W tym przykładzie mamy trzy usługi: web
(Nginx), app
(nasza aplikacja) i db
(PostgreSQL). Docker Compose automatycznie obsługuje konfigurację sieci, połączeń między kontenerami i inne aspekty środowiska aplikacji. Aby uruchomić tę konfigurację, wystarczy użyć polecenia docker-compose up
.