Sobes.tech
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.yml do 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.