flnxi-Wu/scripts/tools/uninstall.sh
WuYongJie d1c6efc79d
Some checks failed
CI Check / check (push) Has been cancelled
feat: NAS 部署与 Harbor 推送流程
2025-12-03 14:39:06 +08:00

134 lines
4.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# ============================================
# FLNXI素材库 - 完全卸载脚本
# 用于测试环境多次卸载重装
# ============================================
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo "========================================"
echo " FLNXI素材库 - 完全卸载"
echo "========================================"
echo ""
echo -e "${RED}警告: 此操作将删除所有容器、数据卷和配置文件!${NC}"
echo ""
# 确认操作
read -p "确定要完全卸载吗? (y/yes): " CONFIRM
if [[ ! "$CONFIRM" =~ ^[Yy]([Ee][Ss])?$ ]]; then
echo "已取消卸载"
exit 0
fi
# 检查 Docker 权限(自动处理)
USE_SUDO=""
if ! docker ps &> /dev/null; then
if command -v sudo &> /dev/null; then
USE_SUDO="sudo"
fi
fi
# 检测 docker-compose 命令
if [ -n "$USE_SUDO" ]; then
if sudo docker compose version &> /dev/null; then
DOCKER_COMPOSE="sudo docker compose"
else
DOCKER_COMPOSE="sudo docker-compose"
fi
else
if docker compose version &> /dev/null; then
DOCKER_COMPOSE="docker compose"
else
DOCKER_COMPOSE="docker-compose"
fi
fi
# 检查是否存在 docker-compose.prod.yml
if [ ! -f "docker-compose.prod.yml" ]; then
echo -e "${YELLOW}警告: 未找到 docker-compose.prod.yml,尝试使用默认配置${NC}"
fi
# 停止并删除容器
echo ""
echo -e "${BLUE}[1/5]${NC} 停止并删除容器..."
if [ -f "docker-compose.prod.yml" ]; then
$DOCKER_COMPOSE -f docker-compose.prod.yml down -v 2>/dev/null || true
else
# 尝试删除可能的容器名称
docker stop flnxi-material flnxi-postgres flnxi-minio flnxi-minio-init 2>/dev/null || true
docker rm flnxi-material flnxi-postgres flnxi-minio flnxi-minio-init 2>/dev/null || true
fi
echo -e "${GREEN}✓ 容器已删除${NC}"
# 删除数据卷
echo ""
echo -e "${BLUE}[2/5]${NC} 删除数据卷..."
if [ -n "$USE_SUDO" ]; then
sudo docker volume rm flnxi_postgres_data 2>/dev/null || true
sudo docker volume rm flnxi_minio_data 2>/dev/null || true
sudo docker volume ls | grep -E "flnxi|flnxi-material" | awk '{print $2}' | xargs -r sudo docker volume rm 2>/dev/null || true
else
docker volume rm flnxi_postgres_data 2>/dev/null || true
docker volume rm flnxi_minio_data 2>/dev/null || true
docker volume ls | grep -E "flnxi|flnxi-material" | awk '{print $2}' | xargs -r docker volume rm 2>/dev/null || true
fi
echo -e "${GREEN}✓ 数据卷已删除${NC}"
# 删除网络
echo ""
echo -e "${BLUE}[3/5]${NC} 删除网络..."
if [ -n "$USE_SUDO" ]; then
sudo docker network rm flnxi_app-network 2>/dev/null || true
sudo docker network ls | grep -E "flnxi|flnxi-material" | awk '{print $1}' | xargs -r sudo docker network rm 2>/dev/null || true
else
docker network rm flnxi_app-network 2>/dev/null || true
docker network ls | grep -E "flnxi|flnxi-material" | awk '{print $1}' | xargs -r docker network rm 2>/dev/null || true
fi
echo -e "${GREEN}✓ 网络已删除${NC}"
# 删除配置文件(可选)
echo ""
echo -e "${BLUE}[4/5]${NC} 清理配置文件..."
read -p "是否删除 .env.production 配置文件? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
rm -f .env.production
echo -e "${GREEN}✓ 配置文件已删除${NC}"
else
echo -e "${YELLOW}保留配置文件${NC}"
fi
# 清理 Docker 资源(可选)
echo ""
echo -e "${BLUE}[5/5]${NC} 清理 Docker 资源..."
read -p "是否清理未使用的 Docker 镜像和缓存? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
if [ -n "$USE_SUDO" ]; then
sudo docker system prune -f
else
docker system prune -f
fi
echo -e "${GREEN}✓ Docker 资源已清理${NC}"
else
echo -e "${YELLOW}跳过 Docker 资源清理${NC}"
fi
# 完成
echo ""
echo "========================================"
echo -e "${GREEN} 卸载完成!${NC}"
echo "========================================"
echo ""
echo "所有容器、数据卷和网络已删除"
echo "可以重新运行 ./install.sh 进行全新安装"
echo ""