Rehber
Docker Compose ile çok servisli bir uygulamayı ayağa kaldırmak
Bir web uygulaması genellikle tek bir container'dan ibaret değildir — uygulama, veritabanı ve önbellek gibi birden fazla servisi birlikte yönetmek gerekir. Docker Compose bunu tek bir dosyayla çözer.
Gerçek dünyadaki bir web uygulaması nadiren tek bir container'dan ibarettir — genellikle bir uygulama sunucusu, bir veritabanı ve bir önbellek katmanı birlikte çalışır. Bu servisleri her seferinde ayrı ayrı `docker run` komutlarıyla başlatmak yerine, Docker Compose tüm yapıyı tek bir YAML dosyasında tanımlamayı sağlar.
Örnek bir compose.yaml
Docker'ın resmi dokümantasyonuna göre güncel Compose sürümleri artık ayrı bir `version:` alanı gerektirmez; dosya doğrudan `services:` anahtarıyla başlar. Üç servisli basit bir örnek aşağıdaki gibi görünür.
compose.yaml
Temel kavramlar
| Alan | Ne işe yarar |
|---|---|
| services | Her biri bir container tanımı olan servis listesi |
| build / image | Servisin yerel Dockerfile'dan mı yoksa hazır bir image'dan mı oluşturulacağı |
| depends_on | Servisler arası başlatma sırası (yalnızca sıra garantisi verir, servisin 'hazır' olduğunu garanti etmez) |
| volumes | Container silindiğinde de kalıcı olması gereken verinin (örneğin veritabanı dosyaları) saklandığı yer |
| environment | Servise geçirilen ortam değişkenleri (bağlantı dizesi, parola gibi) |
Sık karşılaşılan tuzak: depends_on yeterli mi?
`depends_on`, Docker'a 'db servisini web'den önce başlat' der ama veritabanının bağlantı almaya hazır olduğunu garanti etmez — PostgreSQL container'ı başlamış olabilir ama henüz istekleri kabul etmiyor olabilir. Bu nedenle uygulama kodunun kendi içinde bağlantı yeniden deneme (retry) mantığı bulunması, ya da Compose'un `healthcheck` + `condition: service_healthy` özelliğinin kullanılması gerekir.
Temel komutlar
- docker compose up -d — tüm servisleri arka planda başlatır
- docker compose logs -f web — belirli bir servisin loglarını canlı takip eder
- docker compose down — servisleri durdurur (volume'lar varsayılan olarak korunur)
- docker compose down -v — servisleri durdurur ve volume'ları da siler (veri kaybı riski, dikkatli kullanılmalı)
Üretime geçerken dikkat edilmesi gerekenler
Geliştirme ortamında kullanılan compose dosyası genellikle doğrudan üretime taşınmamalıdır — sırlar (parolalar, API anahtarları) ortam değişkeni olarak dosyaya gömülmek yerine bir sır yönetim aracından (Docker secrets, Vault, veya bulut sağlayıcının sır yöneticisi) alınmalı; kaynak sınırları (CPU/bellek) üretim yüküne göre tanımlanmalıdır.
Kategoriler
Etiketler
Kaynaklar
Paylaş
İlgili içerikler
Web Sitesi İçin Güvenilir Yedekleme Stratejisi Nasıl Kurulur?
Bir sitenin veritabanı ve dosyalarını düzenli, test edilmiş ve farklı konumlarda yedekleyen bir stratejinin temel bileşenlerini anlatıyoruz.
2 dk okuma
Yazıyı okuDocker ile Web Uygulaması Dağıtımı: Temel Kavramlar
Docker konteynerlerinin ne olduğunu, geleneksel sunucu dağıtımından farkını ve web uygulamalarını konteynerleştirmenin avantajlarını anlatıyoruz.
2 dk okuma
Yazıyı okuCloudflare Workers ile Sunucusuz (Serverless) Fonksiyonlar
Cloudflare Workers, kod parçacıklarını uç sunucularda çalıştırmanızı sağlayan bir platform. Ne işe yaradığını ve tipik kullanım senaryolarını anlatıyoruz.
2 dk okuma
Yazıyı oku
