CodeBlanks Logo Icon CodeBlanks

Service tanımı

Web service'ini compose dosyasına eklersin.

Servis tanımı

Servis hazır bir image (image:) ya da projedeki bir Dockerfile'dan (build:) oluşturulabilir. docker run seçeneklerinin her birinin bir Compose karşılığı vardır:

services:
  api:
    build: .
    image: api:dev
    ports:
      - "8000:8000"
    environment:
      LOG_LEVEL: info
    restart: unless-stopped

build ve image birlikte yazılınca build edilen image o adla etiketlenir.

Build ayrıntıları

build uzun biçimde context, Dockerfile ve build argümanlarını alabilir. Kod değiştiğinde --build ile image yeniden oluşturulur:

services:
  api:
    build:
      context: ./api
      dockerfile: Dockerfile
      args:
        SURUM: "1.0.0"

docker compose up -d --build

Compose, proje klasörünün adını (ya da -p) önek yapar: container adı proje-api-1 olur.

Uygulama API servisi

compose.yaml'a api servisini yaz: mevcut klasörden build edilsin (build: .); 8000 portunu aynı numarayla yayınlasın; environment altında LOG_LEVEL: info olsun; restart: unless-stopped.

Başlangıç kodu

terminal
# compose.yaml
services:
# buraya yaz

Örnek çözüm

terminal
# compose.yaml
services:
  api:
    build: .
    ports:
      - "8000:8000"
    environment:
      LOG_LEVEL: info
    restart: unless-stopped

Beklenen çıktı

[+] Running 2/2
 ✔ Image proje-api  Built
 ✔ Container proje-api-1  Started

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 docker run -e LOG_LEVEL=info seçeneğinin Compose karşılığı nedir?

  • args: LOG_LEVEL=info
  • environment altında LOG_LEVEL: info Doğru cevap
  • env: LOG_LEVEL
  • vars: [info]

Açıklama: environment hem sözlük hem liste (- AD=değer) biçiminde yazılabilir.

2 Servisi projedeki Dockerfile'dan oluştur.

Soru
services:
  api:
    ____: .
Cevap
services:
  api:
    build: .

Açıklama: build, context klasörünü gösterir.

3 docker run karşılıklarını eşleştir.

Kavram Anlamı
-p 8000:8000 ports
-e AD=değer environment
--restart restart
docker build . build: .

Başlangıç bölümündeki tüm dersler