CodeBlanks Logo Icon CodeBlanks

Compose tasarımı

docker-compose.yml dosyasının yapısını tasarlarsın.

Proje: Compose ile çok servisli uygulama

Gerçek uygulamalar tek container'dan oluşmaz: bir web uygulaması, bir veritabanı, belki bir önbellek. Her birini uzun docker run komutlarıyla başlatmak zahmetli ve hataya açıktır. Docker Compose, tüm servisleri tek bir compose.yaml dosyasında tanımlar ve tek komutla yönetir:

docker compose up -d      # tüm servisleri oluştur ve başlat
docker compose ps         # durumlarını göster
docker compose down       # durdur ve kaldır

Bu projede adım adım bir Python API + PostgreSQL + Redis yığını kuracaksın.

compose.yaml'ın iskeleti

Dosyanın üst düzey anahtarları services (container'lar), volumes (adlandırılmış volume'ler) ve networks'tür (özel ağlar). YAML'da girinti anlam taşır; sekme değil boşluk kullanılır:

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"

Eski docker-compose (tireli, v1) yerine artık Docker'a gömülü docker compose (v2) kullanılır; üstteki version: satırı da gerekmez.

Uygulama İlk compose dosyası

Bir compose.yaml yaz: web servisi nginx:alpine image'ını kullansın ve ana makinenin 8080 portunu container'ın 80 portuna eşlesin.

Başlangıç kodu

terminal
# compose.yaml
# buraya yaz

Örnek çözüm

terminal
# compose.yaml
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"

Beklenen çıktı

[+] Running 2/2
 ✔ Network proje_default  Created
 ✔ Container proje-web-1  Started

Soru ve cevaplar

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

1 Compose'un docker run komutlarına göre temel avantajı nedir?

  • Image gerektirmemesi
  • Yalnızca üretimde çalışması
  • Tüm servislerin ayarı tek bir dosyada ve sürüm kontrolünde durur Doğru cevap
  • Daha hızlı container'lar

Açıklama: Dosyayı alan herkes aynı yığını docker compose up ile kurar.

2 Servisleri tanımlayan üst düzey anahtarı yaz.

Soru
____:
  web:
    image: nginx:alpine
Cevap
services:
  web:
    image: nginx:alpine

Açıklama: Her servis bir ya da daha çok container'a karşılık gelir.

3 Eşleştir.

Kavram Anlamı
services Container tanımları
volumes Adlandırılmış volume'ler
docker compose up -d Yığını başlat
docker compose down Yığını kaldır

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