Günlük geliştirme ve operasyonda en sık kullanılan komutlar. Tümü gerçek proje yapısına göredir.
Docker Compose
# Dev — override otomatik yüklenir
docker compose up -d --build
docker compose ps # servis durumu
docker compose logs -f diyanet-api # tek servis log (takip)
docker compose restart diyanet-api # tek servis restart
docker compose up -d --build diyanet-admin # tek servis yeniden derle
docker compose down # durdur (volume korunur)
docker compose down -v # durdur + volume'leri sil (TEMİZ başlangıç)
Stage / Prod:
# Stage
docker compose --env-file .env.stage \
-f docker-compose.yml -f docker-compose.stage.yml up -d --build
# Prod
docker compose --env-file .env.prod \
-f docker-compose.yml -f docker-compose.prod.yml up -d --build
docker compose down -v tüm verileri (Postgres, Redis, RabbitMQ, Keycloak, Seq) siler. Yalnızca dev’de temiz başlangıç için kullanın.
EF Core migration
Migration’lar DiyanetCleanArchitecture.Infrastructure.EFCore projesinde tutulur; startup projesi API’dir.
# Yeni migration ekle
dotnet ef migrations add MigrationAdi \
--project src/DiyanetCleanArchitecture.Infrastructure.EFCore \
--startup-project src/DiyanetCleanArchitecture.API
# Veritabanını güncelle
dotnet ef database update \
--project src/DiyanetCleanArchitecture.Infrastructure.EFCore \
--startup-project src/DiyanetCleanArchitecture.API
Container içindeki API’den:
docker exec diyanet-api dotnet ef database update \
--project src/DiyanetCleanArchitecture.Infrastructure.EFCore
Dev’de Services:Migration:AutoDeploy = true olduğu için migration’lar API başlarken otomatik uygulanır — manuel database update genelde gerekmez.
Template (dotnet new)
Proje bir dotnet new şablonudur (.template.config/template.json):
# Şablonu yükle (repo kökünden)
dotnet new install .
# Yeni proje üret
dotnet new diyanet-ca -n MyProject
sourceName DiyanetCleanArchitecture’dır; -n MyProject tüm namespace/dosya adlarını yeniden yazar. ProjectKeycloakId (default my-project) ve Framework (default net10.0) sembolleri ile özelleştirilebilir.
npm (SPA’lar)
Her iki SPA klasöründe (src/DiyanetCleanArchitecture.Presentation.{Admin,Website}):
npm install
npm run dev # Vite dev server (Admin 3001 / Website 3000)
npm run build # tsc -b && vite build → dist/
npm run preview # build çıktısını serve et
npm run generate-api # NSwag ile typed Axios client üret (API çalışırken)
PowerShell — Keycloak script’leri (dev)
# Dev test kullanıcılarını oluştur
./scripts/create-keycloak-dev-users.ps1
# Test kullanıcı attribute'larını (permissions, organization_id) set et
./scripts/set-keycloak-test-user-attributes.ps1
# Kurumsal CA sertifikasını export et (on-prem TLS için)
./scripts/export-ca-cert.ps1
Hetzner script’leri (bash)
bash scripts/hetzner-bootstrap.sh # Docker + UFW + log-rotate + deploy user
bash scripts/hetzner-env-init.sh # env dosyaları + secret üretimi
bash scripts/hetzner-platform.sh up # platform (nginx-proxy + acme)
bash scripts/hetzner-deploy.sh infra # paylaşımlı infra
bash scripts/hetzner-deploy.sh app diyanet # app stack (diyanet | kurban | bagis)
Hetzner log/operasyon:
docker compose -p infra-prod -f docker-compose.shared-infra.yml logs -f
docker compose -p diyanet-prod -f docker-compose.app.yml logs -f
docker compose -p kurban-prod -f docker-compose.app.yml down # tek projeyi durdur
docker exec -it infra-prod-postgres-1 psql -U diyanet_root -d diyanet
Health & doğrulama
curl http://localhost:5005/health/ready # readiness (DB/cache/broker)
curl http://localhost:5005/health/live # liveness (her zaman 200)
curl -I https://${PUBLIC_DOMAIN}/api/health/ready # prod, nginx-proxy arkası
docker logs diyanet-acme-companion --tail 30 # sertifika log'u
Sonraki adımlar
Dev Docker
Local stack ve servis erişimi.
Migration'lar
EF Core migration akışı.
Template kullanımı
dotnet new diyanet-ca detayları.
Gözlemlenebilirlik
Health ve log kontrolü.