Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
7 yazı bulundu #docker-compose
Docker Compose'a Giriş: compose.yaml ile Bookstore'u Tek Komutla Ayağa Kaldırmak
DevOps SERİ 01

Docker Compose'a Giriş: compose.yaml ile Bookstore'u Tek Komutla Ayağa Kaldırmak

Docker Compose, Bookstore'un API, web ve SQL Server container'larını, network'ünü ve volume'ünü tek bir compose.yaml'da tanımlar ve docker compose up -d ile hepsini birlikte kaldırır. Dosyanın anatomisini, build ile image farkını, proje adını, service adıyla DNS'i, logs/exec/config komutlarını, down ile down -v'nin veriye etkisini ve version alanının neden artık obsolete olduğunu gerçek çıktılarla görüyoruz.

14 Kas 2026 11 dk 13
Service Bağımlılıkları: depends_on, Healthcheck Koşulları, Migration Service'i ve Restart
DevOps SERİ 02

Service Bağımlılıkları: depends_on, Healthcheck Koşulları, Migration Service'i ve Restart

Kısa depends_on yalnız başlatma sırasını verir; bir service'in hazır olmasını beklemek için healthcheck ve condition: service_healthy, tek seferlik bir işin bitmesini beklemek için service_completed_successfully gerekir. SQL Server'a healthcheck yazıyor, şema script'lerini migrate service'ine ve Compose 5.3'ün pre_start init container'ına taşıyor, restart policy'leri ve SqlClient retry logic'ini gerçek kesinti ölçümleriyle deniyoruz.

14 Kas 2026 12 dk 13
Compose'da Configuration ve Secret'lar: environment, env_file, .env Interpolation, secrets ve Profile'lar
DevOps SERİ 03

Compose'da Configuration ve Secret'lar: environment, env_file, .env Interpolation, secrets ve Profile'lar

.env, Compose'un compose.yaml'daki ${VAR} ifadelerini doldurmak için okuduğu dosyadır ve container'a hiçbir şey vermez; container'a environment variable vermek environment ve env_file'ın, şifreyi dosya olarak vermek secrets:'ın işidir. Öncelik sırasını, ${VAR:?} ile zorunlu değişkenleri, Bookstore'un şifrelerini /run/secrets'a taşımayı, configs ile appsettings vermeyi ve profile'larla opsiyonel service'leri gerçek çıktılarla görüyoruz.

14 Kas 2026 11 dk 15
Development Environment: Compose Watch, Hot Reload ve "Hangi Parça Container'da?" Kararı
DevOps SERİ 04

Development Environment: Compose Watch, Hot Reload ve "Hangi Parça Container'da?" Kararı

Compose Watch, develop.watch kurallarıyla host'taki değişiklikleri çalışan container'a taşır: sync dosyayı kopyalar ve hot reload'lu araçlara yeter, rebuild image'ı yeniden build edip container'ı yeniler. Bağımlılıklar-Compose'da/uygulama-IDE'de, her şey container'da ve Dev Container modellerini karşılaştırıyor, Bookstore.Api'de 5 saniyelik rebuild'i, Angular dev server'ında sync'i ve non-root kullanıcıda silme izni tuzağını gerçek çıktılarla görüyoruz.

14 Kas 2026 10 dk 14
Birden Çok Environment: Override Dosyaları, include, extends ve Merge Kuralları
DevOps SERİ 05

Birden Çok Environment: Override Dosyaları, include, extends ve Merge Kuralları

Compose'da ortak tanım compose.yaml'da durur, her ortam yalnız farkını yazar: compose.override.yaml -f verilmediğinde kendiliğinden yüklenir, diğer dosyalar -f ile katmanlanır; map'ler birleşir, port listesi ise beklenmedik şekilde eklenir. Bookstore'u include ile veritabanı dosyasına, extends ile ortak sqlcmd tanımına ayırıyor, !override ve !reset'i, tmpfs'te temiz veritabanıyla --wait ve exit code'lu bir CI adımını gerçek çıktılarla görüyoruz.

14 Kas 2026 11 dk 11
Tek Sunucuda Production'da Compose: Image Tag'leri, Restart, Log Rotation, Resource Limit ve Sınırlar
DevOps SERİ 06

Tek Sunucuda Production'da Compose: Image Tag'leri, Restart, Log Rotation, Resource Limit ve Sınırlar

Tek sunucuda Compose'la production'ın kuralı, sunucunun hiç build etmemesi: image CI'da build edilip immutable tag'le registry'ye konur, sunucu pull ve up -d --wait ile onu çeker. Bookstore'da deploy ve rollback'i, up -d'nin bağımlılık zinciri yüzünden yarattığı 11,5 saniyelik kesintiyi, log rotation'ı, resource limit'leri, SIGTERM'ü sqlservr'a iletmeyen entrypoint'i ve Compose 5.6 job'ıyla BACKUP DATABASE'i gerçek çıktılarla görüyoruz.

14 Kas 2026 12 dk 17
Compose'un Evrimi: docker-compose v1'den Compose v2 ve v5'e, Compose Specification ve 2024–2026 Özellikleri
DevOps SERİ 07

Compose'un Evrimi: docker-compose v1'den Compose v2 ve v5'e, Compose Specification ve 2024–2026 Özellikleri

Bugünkü Compose tek bir şemayı, Compose Specification'ı uygular: eski dosyalardaki version alanı yok sayılır, 2.x ve 3.x formatlarının alanları birlikte geçerlidir ve v5, Go SDK'sı ve Bake'e devredilen build'leriyle v2'nin devamıdır. Bookstore'un 2019 tarihli docker-compose.yml'ini docker-compose 1.25.5, 1.29.2 ve Compose 5.7.1 ile çalıştırıp farkları gerçek çıktılarla görüyor, 2024–2026 özelliklerinin haritasını ve bir geçiş kontrol listesini çıkarıyoruz.

14 Kas 2026 9 dk 14
Blog Haritası