Skip to main content
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ü.