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
Detay için Ön Gereksinimler.
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
| Servis | URL | Giriş |
|---|---|---|
| Website SPA | http://localhost:3000 | Keycloak (vatandaş) |
| Admin SPA | http://localhost:3001 | Keycloak (personel) |
| API | http://localhost:5005 | — |
| Swagger / Scalar | http://localhost:5005/swagger | — |
| Keycloak Admin | http://localhost:8080 | admin / KEYCLOAK_ADMIN_PASSWORD |
| pgAdmin | http://localhost:5050 | PGADMIN_EMAIL / PGADMIN_PASSWORD |
| RabbitMQ UI | http://localhost:15672 | RABBITMQ_USER / RABBITMQ_PASSWORD |
| Seq (loglar) | http://localhost:5342 | — (dev’de auth yok) |
| Hangfire Dashboard | http://localhost:5005/jobs | admin / admin |
| RedisInsight | http://localhost:5540 | — |
| Prometheus | http://localhost:9090 | — |
| Grafana | http://localhost:3030 | admin / admin |
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.