docker-compose.yml + docker-compose.stage.yml ile çalışır. Bu override, uygulama servislerinin önüne nginx-proxy ve acme-companion (Let’s Encrypt) koyar; tek domain altında path-based routing yapar. Altyapı (Postgres/Redis/RabbitMQ/Keycloak/Seq) bu compose’a dahil değildir — müşterinin mevcut sunucularından gelir.
Başlatma
Routing
nginx-proxy (80/443) içeri gelen istekleri path’e göre yönlendirir:
| Path | Servis | VIRTUAL_* |
|---|---|---|
/api/ | API | VIRTUAL_PATH=/api/, VIRTUAL_PORT=8080 |
/ | Website SPA | VIRTUAL_PATH=/, VIRTUAL_PORT=80 |
/admin/ | Admin SPA | VIRTUAL_PATH=/admin/, VIRTUAL_PORT=80 |
/grafana/ | Grafana | VIRTUAL_PATH=/grafana/, VIRTUAL_PORT=3000 |
VIRTUAL_HOST=${PUBLIC_DOMAIN}, VIRTUAL_PATH, VIRTUAL_DEST, VIRTUAL_PORT ve LETSENCRYPT_HOST=${PUBLIC_DOMAIN}. acme-companion, LETSENCRYPT_HOST taşıyan container’lar için otomatik sertifika alır/yeniler.
API host port AÇMAZ (
expose: 8080 — sadece iç ağ). nginx-proxy önde durur. API ortamı ASPNETCORE_ENVIRONMENT=Staging, ASPNETCORE_FORWARDEDHEADERS_ENABLED=true ile çalışır; CORS ve realm isimleri PUBLIC_DOMAIN’den türetilir (diyanet-vatandas-stage-realm, diyanet-yonetim-stage-realm).Admin SPA — base path
Admin, stage’de/admin/ altında serve edilir. Build arg’ı olarak VITE_BASE_PATH=/admin/ geçilir; container env’i BASE_PATH=/admin/ ile nginx template’i render edilir. Provisioning, Admin redirect URI’sını https://${PUBLIC_DOMAIN}/admin/* olarak set eder (KeycloakProvisioning__Realms__1__Clients__0__RedirectUris__0).
Ön koşullar
- DNS —
PUBLIC_DOMAIN’in A kaydı sunucunun public IP’sine point etmeli. - 80/443 portları internet’ten erişilebilir olmalı (Let’s Encrypt HTTP-01 challenge için 80 zorunlu).
- Dış altyapı host’ları (
POSTGRES_HOST,REDIS_HOST,RABBITMQ_HOST,SEQ_HOST,KEYCLOAK_BASE_URL) erişilebilir olmalı.
stage.local — HTTP-only varyant
İnternet/DNS olmadan local’de stage mimarisini denemek içindocker-compose.stage.local.yml kullanılır (acme-companion devre dışı, HTTP-only):
Doğrulama
Sonraki adımlar
Prod Docker
On-prem ve Hetzner çok-proje.
Ortam değişkenleri
.env.stage.example kategorileri.
Gözlemlenebilirlik
Grafana /grafana/ subpath.
Komutlar
Compose komut referansı.