54 lines
1.5 KiB
Bash
54 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
source "$(dirname "$0")/lib/common.sh"
|
||
init_script_dir
|
||
check_dependencies
|
||
|
||
PURGE=false
|
||
|
||
usage() {
|
||
cat <<'EOF'
|
||
Использование: ./uninstall.sh [--purge]
|
||
|
||
--purge Удалить контейнеры и Docker-тома с данными (необратимо)
|
||
EOF
|
||
}
|
||
|
||
while [[ $# -gt 0 ]]; do
|
||
case "$1" in
|
||
--purge) PURGE=true; shift ;;
|
||
-h|--help) usage; exit 0 ;;
|
||
*) err "Неизвестный аргумент: $1"; usage; exit 1 ;;
|
||
esac
|
||
done
|
||
|
||
if [[ "$PURGE" == true ]]; then
|
||
warn "Будут удалены контейнеры и все данные (тома Docker)!"
|
||
else
|
||
warn "Контейнеры будут удалены. Тома с данными сохранятся."
|
||
fi
|
||
|
||
confirm_or_exit "Продолжить?"
|
||
|
||
if systemctl is-enabled gitea.service >/dev/null 2>&1; then
|
||
warn "Служба gitea.service включена. Сначала выполните: sudo ./remove-service.sh"
|
||
exit 1
|
||
fi
|
||
|
||
docker compose down
|
||
|
||
if [[ "$PURGE" == true ]]; then
|
||
read -r -a volumes <<< "$(get_volume_names)"
|
||
for vol in "${volumes[@]}"; do
|
||
if docker volume inspect "$vol" >/dev/null 2>&1; then
|
||
log "Удаление тома: $vol"
|
||
docker volume rm "$vol"
|
||
fi
|
||
done
|
||
log "Полное удаление завершено."
|
||
else
|
||
log "Контейнеры удалены. Данные сохранены в томах: $(get_volume_names)"
|
||
log "Для полного удаления данных: ./uninstall.sh --purge"
|
||
fi
|