Docker Compose Override Dosyaları ile Ortam Yönetimi
Docker Compose'da `docker-compose.override.yml` dosyası sayesinde aynı temel konfigürasyonu farklı ortamlara uyarlayabilirsin. Mesela geliştirme ortamında volume mount etmek istiyorsun ama production'da istemiyorsun, override bu sorunu çözer.
Problem şu: Tek bir `docker-compose.yml` tüm ortamlar için yeterli olmaz. Production'da debug mode'u kapatmak, volumes'u kaldırmak, resource limitlerini artırmak gerekir. Override dosyası ile ana dosyayı dokunmadan geliştirme-production arasında geçiş yapabilirsin.
Temel Yapı:
1# docker-compose.yml (ana dosya)2version: '3.8'3services:4app:5image: myapp:latest6ports:7- "8000:8000"8environment:9- DEBUG=false10- DATABASE_URL=postgres://db:5432/prod11restart: always12deploy:13resources:14limits:15cpus: '1'16memory: 512M1718db:19image: postgres:1520environment:21POSTGRES_DB: prod22POSTGRES_PASSWORD: secure_pass23volumes:24- db_data:/var/lib/postgresql/data2526volumes:27db_data:Şimdi geliştirme için override dosyası yaz:
1# docker-compose.override.yml (geliştirme ortamı)2version: '3.8'3services:4app:5build:.6volumes:7-.:/app8environment:9- DEBUG=true10- DATABASE_URL=postgres://db:5432/dev11ports:12- "8000:8000"13command: python manage.py runserver 0.0.0.0:80001415db:16environment:17POSTGRES_DB: dev18POSTGRES_PASSWORD: dev_passÇalıştırma:
1# Geliştirme (override dosyası otomatik yüklenir)2docker-compose up34# Production (override'ı atla)5docker-compose -f docker-compose.yml up -dBeklenen çıktı: Geliştirme modunda `DEBUG=true`, volume mount aktif, dev veritabanı kullanılır. Production'da `DEBUG=false`, volume mount yok, secure password ve resource limitler uygulanır.
Sık Yapılan Hata: Override dosyasını `.gitignore`'a eklemeyi unutmak. Geliştirme ayarları (debug, local paths) production'a sızabilir. Ayrıca `docker-compose.prod.yml` gibi farklı dosya isimleri kullanırken `-f` flag'ini belirtmeyi unutma, yoksa override dosyası yüklenmez.
0 yorum