Sobes.tech
Junior

Aké máte skúsenosti s Docker Compose?

sobes.tech AI

Odpoveď od AI

Používam Docker Compose na definovanie a spúšťanie viackontajnerových aplikácií. Skúsenosti zahŕňajú:

  • Vývoj lokálneho prostredia: Vytváranie docker-compose.yml na spustenie všetkých potrebných služieb (backend, frontend, databáza, cache) pre lokálny vývoj. To umožňuje rýchle nasadenie prostredia, izolovaného od hlavného systému.
  • Testovanie: Použitie Docker Compose na vytváranie testovacích prostredí s rôznymi konfiguráciami služieb.
  • Nasadenie na staging/produkciu: Hoci pre produkciu sa často používajú výkonnejší orchestrátori (Kubernetes), v počiatočných fázach alebo pre menšie projekty som použil Docker Compose na nasadenie na staging servery.

Príklady použitia polí v docker-compose.yml:

  • services: Definovanie skupiny kontajnerov.
  • image: Uvedenie používaného Docker obrazu.
  • build: Skladanie obrazu z Dockerfile.
  • ports: Mapovanie portov.
  • volumes: Pripojenie volume pre uchovávanie dát alebo pripojenie zdrojového kódu.
  • networks: Definovanie vlastných sietí.
  • depends_on: Nastavenie závislostí medzi službami.
  • environment: Prenos premenných prostredia do kontajnera.

Príklad jednoduchého nastavenia pre webovú aplikáciu a databázu:

services:
  webapp:
    build: ./webapp # Skladanie z Dockerfile v adresári webapp
    ports:
      - "80:80" # Mapovanie portu 80 hostiteľa na port 80 kontajnera
    environment:
      DATABASE_URL: postgresql://user:password@db:5432/mydb # Prenos premennej prostredia
    depends_on:
      - db # Webová aplikácia závisí od databázy

  db:
    image: postgres:13 # Použitie obrazu PostgreSQL
    volumes:
      - db_data:/var/lib/postgresql/data # Uloženie dát databázy
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb

volumes:
  db_data: # Definovanie pomenovaného volume

Typické príkazy:

docker compose up -d # Spustenie služieb na pozadí
docker compose down # Zastavenie a odstránenie služieb
docker compose build # Skladanie obrazov
docker compose logs <service_name> # Zobrazenie logov konkrétnej služby
docker compose exec <service_name> <command> # Spustenie príkazu v kontejnere

Ovládam verzie syntaxe Compose a ich rozdiely. Rozumiem, ako používať .env súbory na správu premenných prostredia a ako aplikovať profily na spustenie rôznych skupín služieb.