Sobes.tech
Junior

Koje je vaše iskustvo sa Docker Compose?

sobes.tech АИ

Одговор од АИ

Docker Compose koristim za definisanje i pokretanje višekontejnerskih aplikacija. Iskustvo uključuje:

  • Razvoj lokalnog okruženja: Kreiranje docker-compose.yml za pokretanje svih potrebnih servisa (backend, frontend, baza podataka, keš) za lokalni razvoj. Ovo omogućava brzo podizanje okruženja, izolovanog od glavnog sistema.
  • Testiranje: Korišćenje Docker Compose za kreiranje testnih okruženja sa različitim konfiguracijama servisa.
  • Deploy na Staging/Produkciji: Iako se za produkciju često koriste moćniji orkestratori (Kubernetes), u ranim fazama ili za manje projekte koristio sam Docker Compose za deploy na Staging serverima.

Primeri korišćenja polja u docker-compose.yml:

  • services: Definisanje skupa kontejnera.
  • image: Navođenje Docker slike.
  • build: Izgradnja slike iz Dockerfile.
  • ports: Mapiranje portova.
  • volumes: Montiranje volumena za čuvanje podataka ili montiranje izvornog koda.
  • networks: Definisanje korisničkih mreža.
  • depends_on: Postavljanje zavisnosti između servisa.
  • environment: Prenos promenljivih okruženja u kontejner.

Primer jednostavne konfiguracije za web aplikaciju i bazu podataka:

services:
  webapp:
    build: ./webapp # Izgradnja iz Dockerfile u direktorijumu webapp
    ports:
      - "80:80" # Mapiranje porta 80 hosta na port 80 kontejnera
    environment:
      DATABASE_URL: postgresql://user:password@db:5432/mydb # Prenos promenljive okruženja
    depends_on:
      - db # Web aplikacija zavisi od baze podataka

  db:
    image: postgres:13 # Korišćenje PostgreSQL slike
    volumes:
      - db_data:/var/lib/postgresql/data # Čuvanje podataka baze
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb

volumes:
  db_data: # Definisanje imenovanog volumena

Tipične komande:

docker compose up -d # Pokretanje servisa u pozadinskom režimu
docker compose down # Zaustavljanje i brisanje servisa
docker compose build # Izgradnja slika
docker compose logs <service_name> # Pregled logova određenog servisa
docker compose exec <service_name> <command> # Izvršavanje komande unutar kontejnera

Poznajem verzije sintakse Compose i njihove razlike. Razumem kako koristiti .env fajlove za upravljanje promenljivima okruženja i kako primenjivati profile za pokretanje različitih skupova servisa.