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 (
/optgibi tek seviyeli kökler reddedilir). - Hedef IQV imzası taşımalıdır:
docker-compose.yml,backend/,dashboard/ve ilgiliscripts/<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.