Skip to main content
Dev ortamı docker-compose.yml + docker-compose.override.yml ile çalışır. docker compose up çağrıldığında override otomatik yüklenir — başka flag gerekmez. Tüm altyapı container olarak ayağa kalkar.

Başlatma

İlk up’ta sırasıyla: altyapı (Postgres → Redis → RabbitMQ → Seq → Keycloak) healthcheck’leri geçer, ardından API başlar. API ayağa kalkarken migration’lar otomatik uygulanır (Services:Migration:AutoDeploy = true) ve Keycloak realm/client/user’ları otomatik provision edilir (KeycloakProvisioning:Enabled = true).
API, altyapı servislerinin condition: service_healthy olmasını bekler (depends_on). Postgres/Redis/RabbitMQ/Keycloak hazır olmadan API başlamaz.

Servisler

Postgres, Redis, RabbitMQ ve Keycloak healthcheck taşır. RabbitMQ, rabbitmq_delayed_message_exchange plugin’i ile gelir (MassTransit delayed redelivery için).

Servis erişim tablosu

Keycloak — iki realm

Provisioning, API başlarken iki dev realm’i otomatik kurar:
  • diyanet-vatandas-dev-realm → client diyanet-website (public + PKCE, token 2 saat)
  • diyanet-yonetim-dev-realm → client diyanet-admin (public + PKCE, token 5 dakika)
Realm’ler, client’lar, protocol mapper’lar ve test kullanıcıları appsettings.Development.jsonKeycloakProvisioning bölümünden okunur. RunOnce: true olduğu için her başlatmada tekrar tetiklenmez.
Dev compose iki ayrı Keycloak URL değişkeni kullanır: KEYCLOAK_INTERNAL_URL (API container içinden, http://diyanet-keycloak:8080) ve KEYCLOAK_EXTERNAL_URL (tarayıcıdan, http://localhost:8080). SPA bundle’ına external URL gömülür. KC_HOSTNAME_BACKCHANNEL_DYNAMIC=true sayesinde discovery doc’taki jwks_uri istek host’una göre üretilir — aksi halde API IDX10500 No security keys hatası alır.

Tek servisi yeniden derleme

Sonraki adımlar

Komutlar

Docker / dotnet ef / npm referansı.

Ortam değişkenleri

.env.example doldurma.

Gözlemlenebilirlik

Seq, Prometheus, Grafana, Hangfire.

Stage Docker

Reverse proxy’li dağıtım.