Ana içeriğe geç

Kaldırma

Kaldırma tek komuttur ve yalnızca IQV Platform'a ait kaynakları temizler. Başka projelerin container/network/image'larına dokunmaz; docker system prune gibi global yıkıcı komutlar kullanılmaz.

powershell -ExecutionPolicy Bypass -File .\scripts\windows\uninstall.ps1
sudo ./scripts/linux/uninstall.sh

Ne kaldırılır?

Docker modu: -p iqv-platform proje adıyla oluşturulan container'lar, proje ağı ve imajlar durdurulup kaldırılır.

Native mod: servis/görev tanımları (systemd unit + Nginx site / Windows Scheduled Task) durdurulur, devre dışı bırakılır ve silinir; üretilen build/runtime dosyaları temizlenir.

Seçenekler ve güvenlik sınırları

Windows Linux Davranış
-PurgeData --purge-data Yalnızca bu projeye ait local Docker volume'larını siler. Harici MongoDB/MinIO/SMTP verisine asla dokunmaz.
-RemoveCode --remove-code Uygulama kodunu (repo dizinini) siler.
-DryRun --dry-run Neyin silineceğini gösterir, hiçbir şey silmez.
-Yes --yes Etkileşimsiz (onay sorulmaz).

Kod silme ve veri silme ayrıdır

--remove-code yalnızca kodu siler, --purge-data yalnızca bu projenin local volume'larını siler. İkisi bilinçli olarak ayrılmıştır; veri kaybı riski olan işlem tek başına ve açıkça istenmelidir.

Self-delete koruması

--remove-code, silinecek dizinin içinden çalıştırılırsa güvenlik gereği reddedilir (Windows/Linux dosya kilidi ve kendini silme sorunları). Script bu durumda repo dışından çalıştırılacak doğru komutu yazdırır:

cd /tmp && sudo '/opt/iqv-platform/scripts/linux/uninstall.sh' --mode docker --remove-code --yes

Kurulum kökü doğrulaması (recursive delete guard)

--remove-code / -RemoveCode hiçbir zaman doğrulanmamış bir yol üzerinde recursive silme yapmaz. Silmeden önce hedef yol şu kontrollerden geçer; biri bile başarısız olursa işlem reddedilir ve hiçbir şey silinmez:

  • Yol boş olamaz ve mutlak olmalıdır (göreli yol reddedilir).
  • Yol var olan bir dizin olmalıdır (dosya reddedilir).
  • Filesystem kökü (/, C:\) ve sürücü/paylaşım kökü reddedilir.
  • Sistem dizinleri reddedilir (/usr, /var, /home, /tmp, %SystemRoot%, %ProgramFiles%, %ProgramData%, %USERPROFILE% …).
  • Yol en az iki seviye derinlikte olmalıdır (/opt gibi tek seviyeli kökler reddedilir).
  • Hedef IQV imzası taşımalıdır: docker-compose.yml, backend/, dashboard/ ve ilgili scripts/<platform>/lib.* dosyasının hepsi bulunmalıdır. Kısmi imza yeterli değildir.

Bu sayede rm -rf / benzeri bir davranış, ortam değişkeni boş/yanlış gelse bile yapısal olarak mümkün değildir.

Idempotency

Zaten kaldırılmış bir sistemde stack trace üretmez: "container already removed", "service not found" gibi durumlar kontrollü şekilde bildirilir ve çıkış kodu başarılıdır.