Dev ortamında her servis kendi host port’unda çalışır; reverse-proxy yoktur.
docker-compose.override.yml otomatik yüklenir ve tüm altyapıyı (Postgres, Redis, RabbitMQ, Keycloak, Seq, pgAdmin, …) container’lardan getirir.Ön koşullar
1
Docker Desktop çalışıyor
docker compose version v2 dönmeli. Windows’ta WSL 2 backend açık.2
Portlar boş
5005, 3000, 3001, 5432, 6379, 5672, 15672, 8080, 5341, 5342, 5050 boş olmalı.3
(Opsiyonel) .NET 10 + Node 22
Container dışında geliştirme/debug için. Sadece çalıştıracaksanız gerekmez.
1. Repoyu klonla
2. .env dosyasını hazırla
Dev compose, repo kökündeki .env dosyasını okur. Örnekten kopyalayın ve CHANGE_ME değerlerini doldurun:
3. Her şeyi başlat
docker-compose.yml(base: API + 2 SPA) +docker-compose.override.yml’i (dev altyapı) birleştirir.- API’yi (multi-stage .NET 10 imajı) ve iki SPA’yı (Vite build → nginx) derler.
- PostgreSQL, Redis, RabbitMQ, Keycloak, Seq, pgAdmin, RedisInsight, Prometheus, Grafana’yı ayağa kaldırır.
4. Veritabanı migration’ları
appsettings.Development.json içinde Services:Migration:AutoDeploy: true olduğundan, API açılışında MigrationService otomatik Database.MigrateAsync() çalıştırır ve şemayı oluşturur. Ayrıca DistrictSeeder 973 ilçeyi, DevDataSeeder bootstrap admin’leri yükler.
Migration’ı elle uygulamak isterseniz:
5. Servislere erişim
6. Keycloak provisioning
Dev’de Keycloak otomatik kurulur:KeycloakProvisioning:Enabled: true olduğundan API açılışta diyanet-vatandas-dev-realm ve diyanet-yonetim-dev-realm realm’lerini, client’larını, protokol mapper’larını ve test kullanıcılarını oluşturur (RunOnce).
Test kullanıcıları oluşturmak/güncellemek için PowerShell yardımcıları:
Faydalı komutlar
Sorun mu çıktı?
API 'connection refused' (Postgres/Redis) veriyor
API 'connection refused' (Postgres/Redis) veriyor
Altyapı container’ları henüz hazır değil olabilir.
docker compose ps ile healthy durumu bekleyin; API depends_on ile health bekler ama ilk kalkışta retry görebilirsiniz.Keycloak login açılmıyor / realm yok
Keycloak login açılmıyor / realm yok
Provisioning birkaç saniye sürer.
docker compose logs -f diyanetcleanarchitecture-api içinde [Keycloak Provisioning] satırlarını izleyin. Bkz. Keycloak › Troubleshooting.Port çakışması
Port çakışması
İlgili host port’unu kullanan başka bir süreç var.
docker compose down sonrası port’u boşaltın veya docker-compose.override.yml’de port eşlemesini değiştirin.