#!/bin/bash # ============================================ # 由壹点3D素材 - 卸载脚本 # ============================================ set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo "========================================" echo " 由壹点3D素材 - 卸载向导" echo "========================================" echo "" echo -e "${RED}警告: 此操作将删除所有数据,包括:${NC}" echo " - 所有上传的文件" echo " - 数据库中的所有数据" echo " - MinIO 中的所有对象" echo "" read -p "是否继续卸载? 输入 'YES' 确认: " CONFIRM if [ "$CONFIRM" != "YES" ]; then echo "已取消卸载" exit 0 fi # 检测 docker-compose 命令 if docker compose version &> /dev/null 2>&1; then DOCKER_COMPOSE="docker compose" elif command -v docker-compose &> /dev/null; then DOCKER_COMPOSE="docker-compose" else echo -e "${RED}错误: 未找到 docker-compose 命令${NC}" exit 1 fi echo "" echo -e "${BLUE}[1/4]${NC} 停止并删除容器..." $DOCKER_COMPOSE down echo -e "${GREEN}✓ 容器已删除${NC}" echo "" echo -e "${BLUE}[2/4]${NC} 是否删除数据卷(包含所有数据)?" read -p "删除数据卷? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then $DOCKER_COMPOSE down -v echo -e "${GREEN}✓ 数据卷已删除${NC}" else echo -e "${YELLOW}⚠ 数据卷已保留${NC}" fi echo "" echo -e "${BLUE}[3/4]${NC} 是否删除本地文件?" read -p "删除 uploads 目录? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then rm -rf uploads echo -e "${GREEN}✓ 本地文件已删除${NC}" else echo -e "${YELLOW}⚠ 本地文件已保留${NC}" fi echo "" echo -e "${BLUE}[4/4]${NC} 是否删除 Docker 镜像?" read -p "删除应用镜像? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then docker images | grep youyidian-3d-material | awk '{print $3}' | xargs -r docker rmi -f echo -e "${GREEN}✓ 镜像已删除${NC}" else echo -e "${YELLOW}⚠ 镜像已保留${NC}" fi echo "" echo "========================================" echo -e "${GREEN} 卸载完成${NC}" echo "========================================" echo "" echo "保留的文件:" ls -la | grep -E "docker-compose.yml|.env|install.sh" echo "" echo "如需完全删除,请手动删除这些文件" echo ""