Docker Compose Nedir, Nasıl Kullanılır?

Docker Compose Nedir, Nasıl Kullanılır?

Docker Compose, birden çok konteynerden oluşan uygulamaları tek bir YAML dosyasıyla tanımlayıp yöneten bir araçtır. Tek bir docker run komutuyla bir konteyner çalıştırmak kolaydır; ancak gerçek uygulamalar genellikle bir web sunucusu, bir veritabanı ve belki bir önbellek gibi birbirine bağlı birkaç servisten oluşur. Compose, bu servislerin tamamını, ağlarını ve veri alanlarını (volume) tek bir dosyada tarif eder ve hepsini tek komutla ayağa kaldırır. Bu rehberde Docker Compose’un ne olduğunu ve nasıl kullanılacağını adım adım anlatıyoruz.

Compose ile çok servisli projelerinizi düzenli biçimde çalıştırmak için kendi VPS/sunucunuza Docker kurmanız yeterlidir.

Docker Compose Ne İşe Yarar?

Compose’un temel amacı, çok konteynerli bir uygulamanın tüm yapısını kod olarak (Infrastructure as Code) tanımlamaktır. Bir compose.yaml dosyasında hangi servislerin çalışacağını, hangi imajları kullanacaklarını, hangi portları açacaklarını ve birbirleriyle nasıl konuşacaklarını yazarsınız. Böylece projeyi başka bir sunucuya taşımak, ekip arkadaşlarınızla paylaşmak veya yeniden kurmak tek komuta iner. Geliştirme, test ve küçük üretim ortamları için ideal bir araçtır.

compose.yaml Dosyasının Temel Yapısı

Compose dosyasının ana bölümü services‘tir; her servis bir konteynere karşılık gelir. İsteğe bağlı olarak üst seviyede volumes ve networks tanımlanır. Bir web sunucusu ve bir veritabanından oluşan basit bir örnek:

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: postgres:18
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: gizli_parola
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Burada web servisi 8080 portunu host’a açar, db servisi ise verisini kalıcı bir volume’de saklar. depends_on, db’nin web’den önce başlatılmasını sağlar.

Temel Compose Komutları

Tüm yığını yönetmek birkaç komuta indirgenir:

Mail hosting 1 ay ücretsiz
docker compose up            # servisleri olusturur ve baslatir (log akisiyla)
docker compose up -d         # arka planda (detached) baslatir
docker compose up -d --build # imajlari yeniden derleyip baslatir
docker compose ps            # calisan servisleri listeler
docker compose logs -f       # loglari canli izler
docker compose stop          # silmeden durdurur
docker compose down          # konteyner ve aglari durdurur + siler
docker compose down -v       # ek olarak volume'lari da siler (VERI GIDER)

Dikkat: komut artık tireli eski docker-compose değil, boşluklu docker compose biçimindedir (Compose V2).

Tipik Bir Kullanım Akışı

Pratikte akış şöyledir: proje dizininde bir compose.yaml oluşturursunuz, docker compose up -d ile her şeyi başlatırsınız, docker compose logs -f ile durumu izlersiniz ve işiniz bittiğinde docker compose down ile temizlersiniz. Bir imajı güncellemek istediğinizde docker compose pull sonra tekrar up -d yeterlidir. Bu döngü, karmaşık kurulumları bile son derece tekrarlanabilir kılar.

Dikkat Edilmesi Gerekenler

  • services zorunlu üst seviye anahtardır; servis içinde referans verilen volumes ve networks ayrıca üst seviyede tanımlanmalıdır.
  • depends_on yalnızca başlatma sırasını garanti eder, servisin “hazır” olmasını değil; veritabanı hazırlığı için healthcheck veya --wait kullanın.
  • docker compose down -v named volume’ları siler; veritabanı verinizi kaybetmemek için bu komutu dikkatli kullanın.
  • Üretimde parolaları doğrudan dosyaya yazmak yerine .env dosyası veya secret yönetimi tercih edin.

Sıkça Sorulan Sorular

docker-compose ile docker compose farkı ne?

Eski tireli sürüm (V1) ayrı bir araçtı; güncel sürüm (V2) Docker’a entegredir ve docker compose olarak çalışır.

Compose üretim için uygun mu?

Tek sunuculu küçük-orta üretim için uygundur; çok sunuculu ölçek için Kubernetes gerekir.

Verilerim kalıcı mı?

Yalnızca volume tanımladığınız servislerde; volume olmadan konteyner silinince veri kaybolur.

Birden çok ortam kurabilir miyim?

Evet, farklı .env ve compose dosyalarıyla geliştirme/üretim ortamları ayrılabilir.

Compose nasıl güncellenir?

Docker güncel ise Compose V2 dahildir; docker compose version ile kontrol edebilirsiniz.

Docker Projeleriniz İçin Sunucu

Çok servisli Compose uygulamalarınız için NVMe SSD’li, ayrılmış kaynaklı VPS çözümleri.

VPS/Sunucu Çözümleri →

Türkiye'nin En Çok Tavsiye Edilen Domain, Hosting ve Bulut Servis Sağlayıcısı
İnternet sitesi Alastyr İnternet Sitesi
Yazı oluşturuldu 479

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön