docker-compose.prod.yml. Beş servis
kalkar ve sıra bilinçlidir:
Migration’ın ayrı bir servis olması yarış önler: üç uygulama aynı anda kalkıp
şemayı aynı anda kurmaya çalışmaz —
migrate bitmeden uygulamalar başlamaz.
Uygulamalar migration bağlantısını değil, RLS’e tabi kısıtlı rolü kullanır.
Hazır imajlar
Her sürümde üç imaj GitHub Packages’a (GHCR) yüklenir —linux/amd64 ve
linux/arm64:
latest yerine sabit sürüm kullanın (:0.2.0 gibi): böylece
yeniden başlatma sessizce sürüm atlamaz. Çalışan sürümü GET /health/live
döndürür. Kompozisyon varsayılan olarak kaynaktan derler; hazır imaj kullanmak
için servislerdeki build: bloğunu image: ghcr.io/dakicksoft/poyra-<uygulama>:<sürüm>
ile değiştirin.
Adım adım
.env içine taban adresleri ekleyin (banka dönüşleri ve e-posta bağlantıları
bunlara göre üretilir):
:?zorunlu
doğrulaması); uygulamalar da açılışta anahtarları doğrular — üretimde zayıf ya
da eksik anahtarla süreç başlamaz.
Veritabanı rolleri
İlk açılıştadocker/initdb betikleri iki rol kurar:
poyra— tablo sahibi: migration ve Hangfire deposu bunu kullanır.poyra_app— uygulama rolü:SUPERUSER/BYPASSRLSdeğildir, satır düzeyi güvenliğe tabidir ve kritik tablolardaDELETEyetkisi yoktur.
Ters vekil
Üç alan adını üç porta bağlayın; TLS vekilin işidir. Caddy örneği:- Panel Blazor Server’dır: vekilde WebSocket geçişi açık olmalıdır.
/hangfire(arka plan işleri panosu) API host’undadır ve platform anahtarıyla korunur; vekilde tümüyle kapatmak da meşru bir tercihtir.- Sağlık uçları:
GET /health/live(süreç ayakta mı) veGET /health/ready(veritabanına erişebiliyor mu — başarısızsa 503). İzleme ve yük dengeleyici bunlara bakmalıdır.