Docker Compose Nedir?
Docker Compose, birden fazla konteyneri tek bir yapılandırma dosyası üzerinden tanımlamayı ve tek komutla çalıştırmayı sağlayan bir araçtır. Web sunucusu, veritabanı ve önbellek servisi gibi birbirine bağımlı bileşenleri ayrı ayrı kurmak yerine, hepsini docker-compose.yml dosyasında tanımlayıp docker compose up komutuyla tek seferde ayağa kaldırabilirsiniz.
Neden Docker Compose Kullanmalısınız?
- Tutarlı ortam: Geliştirici bilgisayarında, test sunucusunda ve canlı ortamda aynı yapılandırma çalışır.
- Hızlı kurulum: Yeni bir geliştirici projeye katıldığında tüm ortamı tek komutla kurabilir.
- İzolasyon: Her servis kendi konteynerinde çalışır, sistem genelinde çakışma riski ortadan kalkar.
- Kolay temizlik: Proje silindiğinde konteynerler ve volumeler tek komutla kaldırılabilir.
Örnek Bir Geliştirme Ortamı Yapılandırması
Tipik bir PHP/Laravel projesi için docker-compose.yml dosyası genellikle üç temel servisten oluşur:
- web: Uygulamanın çalıştığı PHP/Laravel servisi
- db: PostgreSQL veya MySQL veritabanı servisi
- redis: Önbellekleme ve oturum yönetimi için Redis servisi
Örnek yapı şu şekildedir:
services:
web:
build: .
ports:
- "8000:80"
volumes:
- .:/var/www/html
depends_on:
- db
- redis
db:
image: postgres:16
environment:
POSTGRES_DB: paxost_app
POSTGRES_PASSWORD: secret
ports:
- "5432:5432"
volumes:
- dbdata:/var/lib/postgresql/data
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
dbdata:
Geliştirme Ortamını Çalıştırma
Yapılandırma dosyası hazır olduğunda ortamı başlatmak için tek komut yeterlidir:
docker compose up -d
Bu komut tüm servisleri arka planda başlatır. Logları takip etmek için:
docker compose logs -f
Ortamı durdurmak için:
docker compose down
Dikkat Edilmesi Gereken Noktalar
- Volume kullanımı: Veritabanı verilerinin konteyner silindiğinde kaybolmaması için volume tanımlamayı unutmayın.
- Ortam değişkenleri: Şifre ve hassas bilgileri doğrudan dosyaya yazmak yerine
.envdosyası kullanmak daha güvenlidir. - depends_on sınırı: Bu ayar sadece konteynerin başlatılma sırasını belirler, servisin tam olarak hazır olmasını garanti etmez. Kritik projelerde healthcheck eklemek önerilir.
Paxost Olarak Yaklaşımımız
Paxost'ta geliştirdiğimiz tüm projelerde Docker Compose tabanlı standart geliştirme ortamları kullanıyoruz. Bu sayede müşterilerimize teslim ettiğimiz projeler, farklı sunucu ortamlarında da öngörülebilir ve tutarlı şekilde çalışıyor.
Projeniz için modern ve sürdürülebilir bir altyapı kurmak isterseniz bizimle iletişime geçebilirsiniz.
Sık Sorulan Sorular
Docker Compose ile Docker arasındaki fark nedir?
Docker tek bir konteyneri yönetirken, Docker Compose birden fazla konteyneri tek bir yapılandırma dosyasıyla birlikte yönetmenizi sağlar.
Docker Compose canlı ortamda kullanılabilir mi?
Küçük ve orta ölçekli projelerde kullanılabilir, ancak büyük ölçekli ve yüksek trafikli sistemlerde Kubernetes gibi orkestrasyon araçları daha uygun olabilir.
Veritabanı verilerim konteyner silindiğinde kaybolur mu?
Volume tanımlaması yapıldığında veriler korunur. Volume kullanılmazsa konteyner silindiğinde veriler de kaybolur.