Skip to main content
Stage ortamı 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

cp .env.stage.example .env.stage   # PUBLIC_DOMAIN + secret'ları doldur
docker compose --env-file .env.stage \
  -f docker-compose.yml -f docker-compose.stage.yml up -d --build

Routing

nginx-proxy (80/443) içeri gelen istekleri path’e göre yönlendirir:
PathServisVIRTUAL_*
/api/APIVIRTUAL_PATH=/api/, VIRTUAL_PORT=8080
/Website SPAVIRTUAL_PATH=/, VIRTUAL_PORT=80
/admin/Admin SPAVIRTUAL_PATH=/admin/, VIRTUAL_PORT=80
/grafana/GrafanaVIRTUAL_PATH=/grafana/, VIRTUAL_PORT=3000
Her container şu env’leri taşır: 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

  • DNSPUBLIC_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çin docker-compose.stage.local.yml kullanılır (acme-companion devre dışı, HTTP-only):
docker compose --env-file .env.stage.local \
  -f docker-compose.yml -f docker-compose.stage.local.yml up -d --build

Doğrulama

docker ps
docker logs diyanet-acme-companion --tail 30        # sertifika log'u

curl -I https://${PUBLIC_DOMAIN}/                    # Website → 200
curl -I https://${PUBLIC_DOMAIN}/admin/              # Admin   → 200
curl -I https://${PUBLIC_DOMAIN}/api/health/ready    # API     → 200

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