Makale Başlıkları
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:
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
serviceszorunlu üst seviye anahtardır; servis içinde referans verilenvolumesvenetworksayrıca üst seviyede tanımlanmalıdır.depends_onyalnızca başlatma sırasını garanti eder, servisin “hazır” olmasını değil; veritabanı hazırlığı için healthcheck veya--waitkullanın.docker compose down -vnamed volume’ları siler; veritabanı verinizi kaybetmemek için bu komutu dikkatli kullanın.- Üretimde parolaları doğrudan dosyaya yazmak yerine
.envdosyası 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.





