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:latest
6ports:
7- "8000:8000"
8environment:
9- DEBUG=false
10- DATABASE_URL=postgres://db:5432/prod
11restart: always
12deploy:
13resources:
14limits:
15cpus: '1'
16memory: 512M
17
18db:
19image: postgres:15
20environment:
21POSTGRES_DB: prod
22POSTGRES_PASSWORD: secure_pass
23volumes:
24- db_data:/var/lib/postgresql/data
25
26volumes:
27db_data:

Şimdi geliştirme için override dosyası yaz:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1# docker-compose.override.yml (geliştirme ortamı)
2version: '3.8'
3services:
4app:
5build:.
6volumes:
7-.:/app
8environment:
9- DEBUG=true
10- DATABASE_URL=postgres://db:5432/dev
11ports:
12- "8000:8000"
13command: python manage.py runserver 0.0.0.0:8000
14
15db:
16environment:
17POSTGRES_DB: dev
18POSTGRES_PASSWORD: dev_pass

Çalıştırma:

1# Geliştirme (override dosyası otomatik yüklenir)
2docker-compose up
3
4# Production (override'ı atla)
5docker-compose -f docker-compose.yml up -d

Beklenen çı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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz