Junior
Jakie masz doświadczenie z Docker Compose?
sobes.tech AI
Odpowiedź od AI
Używam Docker Compose do definiowania i uruchamiania aplikacji wielokontenerowych. Moje doświadczenie obejmuje:
- Rozwój lokalnego środowiska: Tworzenie pliku
docker-compose.ymldo uruchomienia wszystkich niezbędnych usług (backend, frontend, baza danych, cache) dla lokalnego rozwoju. Pozwala to na szybkie uruchomienie odizolowanego środowiska. - Testowanie: Używanie Docker Compose do tworzenia środowisk testowych z różnymi konfiguracjami usług.
- Wdrażanie na staging/produkcji: Chociaż do produkcji często używa się bardziej zaawansowanych orkestratorów (np. Kubernetes), Docker Compose był używany na wczesnych etapach lub dla małych projektów do wdrożeń na serwerach staging.
Przykłady użycia pól w docker-compose.yml:
services: Definicja zestawu kontenerów.image: Określenie używanego obrazu Docker.build: Budowa obrazu z Dockerfile.ports: Mapowanie portów.volumes: Montowanie wolumenów do przechowywania danych lub montowania kodu źródłowego.networks: Definicja własnych sieci.depends_on: Ustalanie zależności między usługami.environment: Przekazywanie zmiennych środowiskowych do kontenera.
Przykład prostej konfiguracji dla aplikacji webowej i bazy danych:
services:
webapp:
build: ./webapp # Budowa z Dockerfile w katalogu webapp
ports:
- "80:80" # Mapowanie portu 80 hosta na port 80 kontenera
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydb # Zmienna środowiskowa
depends_on:
- db # Web zależy od bazy danych
db:
image: postgres:13 # Użycie obrazu PostgreSQL
volumes:
- db_data:/var/lib/postgresql/data # Przechowywanie danych
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
db_data: # Definicja wolumenu nazwanej
Typowe polecenia:
docker compose up -d # Uruchomienie usług w tle
docker compose down # Zatrzymanie i usunięcie usług
docker compose build # Budowa obrazów
docker compose logs <nazwa_usługi> # Wyświetlenie logów konkretnej usługi
docker compose exec <nazwa_usługi> <polecenie> # Wykonanie polecenia wewnątrz kontenera
Znam składnię różnych wersji Compose i ich różnice. Rozumiem, jak korzystać z plików .env do zarządzania zmiennymi środowiskowymi i jak stosować profile do uruchamiania różnych zestawów usług.