Docker Compose Nedir?
Docker Compose Yapılandırma Dosyası (docker-compose.yml)
1. Versiyon (version): Docker Compose'un hangi sürümünü kullanacağınızı belirler.
2. Hizmetler (services): Her bir konteyneri tanımladığınız alandır. Her bir servis bir konteyneri ifade eder.
3. Ağlar (networks): Hizmetler arasındaki iletişimi yönetir.
4. Ciltler (volumes): Verilerin kalıcı olmasını sağlar.
Örnek bir `docker-compose.yml` dosyasına göz atalım:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
networks:
- app-network
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
networks:
- app-network
networks:
app-network:
driver: bridge
Bu dosyada, iki servis tanımladık: bir web servisi (Nginx ile) ve bir db servisi (MySQL ile). Web servisi, port 80 üzerinden erişilebilirken, MySQL veritabanının root parolası `example` olarak ayarlanmış.
Docker Compose ile Hizmetleri Çalıştırmak
docker-compose up
Bu komut, `docker-compose.yml` dosyasındaki servisleri başlatacak ve her şey hazır olana kadar bekleyecektir. Eğer sadece bir servis başlatmak isterseniz, aşağıdaki komutu kullanabilirsiniz:
docker-compose up web
Bu, sadece web servisini başlatır.
Docker Compose ile Hizmetleri Arka Planda Çalıştırmak
docker-compose up -d
Bu komut, servislerinizi arka planda çalıştırarak terminali serbest bırakır.
Docker Compose ile Hizmetleri Durdurmak
docker-compose down
Bu komut, çalışmakta olan tüm konteynerleri durdurur ve siler. Ancak, verilerinizi kaybetmek istemiyorsanız, veri kalıcılığını sağlamak için ciltlerinizi (volumes) koruyabilirsiniz.
Docker Compose ile Güncelleme Yapmak
docker-compose pull
Bu, tüm servislerinizin en son sürümlerini indirir. Sonrasında, yeni sürümleri başlatmak için tekrar:
docker-compose up -d
komutunu çalıştırabilirsiniz.
Docker Compose ve Çevresel Değişkenler
version: '3.8'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
Burada, `DB_PASSWORD` çevresel değişkeninin değerini alır ve MySQL servisinin root parolası olarak kullanır.
Docker Compose İle Yalnızca Dockerfile İle Çalışmak
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "5000:5000"
Burada, `Dockerfile` dosyanızı belirtilen konumdan (bu örnekte aynı dizinden) kullanarak bir imaj inşa ediyorsunuz.
Docker Compose İle Ölçeklenebilir Uygulamalar
docker-compose up --scale web=3
Bu komut, `web` servisini 3 örnekle başlatacak ve yük dengelemesiyle daha fazla trafiği kaldırmanızı sağlayacaktır.