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
11 yazı bulundu #docker-compose
YAML 2: Multiline String'ler, Anchor/Alias, Merge Key, Çoklu Doküman ve KYAML
Geliştirici Araçları SERİ 03

YAML 2: Multiline String'ler, Anchor/Alias, Merge Key, Çoklu Doküman ve KYAML

Script'i | ile, uzun metni > ile yaz; secret gibi tek satırlık değerlerde |- kullan, yoksa sona \n eklenir. Merge key (<<) YAML 1.2'de yok: Compose, kubectl ve kubeconform destekliyor, GitHub Actions desteklemiyor, js-yaml 5 ise ayar istiyor. Çoklu doküman, anchor'ın doküman sınırı, güvensiz tag'ler, KYAML ve Bookstore için bir yamllint kural setini gerçek çıktılarla gösteriyoruz.

15 Kas 2026 14 dk 6
YAML 1: Syntax, Tipler ve "Norway Problem": Bir YAML Dosyasını Doğru Okumak
Geliştirici Araçları SERİ 02

YAML 1: Syntax, Tipler ve "Norway Problem": Bir YAML Dosyasını Doğru Okumak

Tırnaksız bir YAML değerinin tipini parser'ın uyguladığı kural seti belirler: YAML 1.1'de NO false, 12:30 sayı, 0755 sekizlik; YAML 1.2'de üçü de farklı. PyYAML, ruamel.yaml, js-yaml, YamlDotNet, yq, Docker Compose ve kubectl'i aynı dosyayla çalıştırıp Bookstore'un compose.yaml ve Kubernetes manifest'indeki üç gerçek tip hatasını gösteriyoruz.

15 Kas 2026 13 dk 5
Aspire ile Deploy: publish, deploy ve do; Docker Compose, Kubernetes ve Azure Hedefleri
Backend SERİ 07

Aspire ile Deploy: publish, deploy ve do; Docker Compose, Kubernetes ve Azure Hedefleri

aspire publish AppHost'tan yer tutuculu artifact (Compose dosyası, Helm chart'ı) üretir, aspire deploy değerleri çözüp image'ları build ederek hedefe uygular, aspire do tek bir pipeline adımını çalıştırır. Yazı Bookstore'u Docker Compose'a deploy ederken dışarı açılmayan gateway'i, production'a sızan seed verisini, https olmayan Keycloak Authority'sini ve Angular çıktı klasörünü düzeltiyor; Helm chart'ını, registry ihtiyacını ve Azure hedeflerini anlatıyor.

14 Kas 2026 12 dk 11
Aspire Nedir, Ne Değildir? AppHost, App Model ve Docker Compose/Kubernetes ile Farkı
Backend SERİ 01

Aspire Nedir, Ne Değildir? AppHost, App Model ve Docker Compose/Kubernetes ile Farkı

Aspire, çok service'li bir uygulamanın parçalarını ve bağlantılarını AppHost'ta kodla tarif edip tek komutla çalıştıran, telemetry'sini dashboard'da toplayan lokal bir orchestration ve observability katmanı; production orchestrator'ı ya da service mesh değil. Yazı Bookstore'a aspire init ile AppHost eklemeyi, DCP proxy'sini, Aspire'ın verdiği environment variable'ları ve ServiceDefaults olmadan neden trace görünmediğini gerçek çıktılarla gösteriyor.

14 Kas 2026 14 dk 9
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
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
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
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
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
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
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
Blog Haritası