feat(deploy): add nuke command for complete Docker cleanup

Add nuclear option to completely remove:
- All Docker containers
- All Docker images
- All Docker volumes (database data)
- All Docker networks
- All build cache

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-24 20:25:40 -08:00
parent 3b6d178ef7
commit 47d5434c98
1 changed files with 76 additions and 0 deletions

View File

@ -959,6 +959,75 @@ do_deploy_full() {
echo ""
}
#===============================================================================
# 核弹级清理 (彻底删除所有Docker资源)
#===============================================================================
do_nuke() {
echo -e "${RED}╔═══════════════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${RED}║ ☢️ 核弹级清理 ☢️ ║${NC}"
echo -e "${RED}║ ║${NC}"
echo -e "${RED}║ 这将彻底删除: ║${NC}"
echo -e "${RED}║ - 所有 Docker 容器 (包括运行中的) ║${NC}"
echo -e "${RED}║ - 所有 Docker 镜像 (包括基础镜像) ║${NC}"
echo -e "${RED}║ - 所有 Docker 数据卷 (PostgreSQL, Redis, Neo4j 数据) ║${NC}"
echo -e "${RED}║ - 所有 Docker 网络 ║${NC}"
echo -e "${RED}║ - 所有构建缓存 ║${NC}"
echo -e "${RED}║ ║${NC}"
echo -e "${RED}║ 此操作不可撤销!所有数据将永久丢失! ║${NC}"
echo -e "${RED}╚═══════════════════════════════════════════════════════════════════════════════╝${NC}"
echo ""
read -p "确认要执行核弹级清理吗?请输入 NUKE 确认: " confirm
if [ "$confirm" != "NUKE" ]; then
log_info "操作已取消"
exit 0
fi
log_warning "开始核弹级清理..."
# 1. 停止并删除所有项目容器和数据卷
log_step "停止并删除项目容器..."
$DOCKER_COMPOSE down -v --rmi all 2>/dev/null || true
# 2. 停止所有运行中的容器
log_step "停止所有运行中的容器..."
docker stop $(docker ps -aq) 2>/dev/null || true
# 3. 删除所有容器
log_step "删除所有容器..."
docker rm -f $(docker ps -aq) 2>/dev/null || true
# 4. 删除所有镜像
log_step "删除所有镜像..."
docker rmi -f $(docker images -aq) 2>/dev/null || true
# 5. 删除所有数据卷
log_step "删除所有数据卷..."
docker volume rm -f $(docker volume ls -q) 2>/dev/null || true
# 6. 删除所有网络 (保留默认网络)
log_step "删除自定义网络..."
docker network rm $(docker network ls -q --filter type=custom) 2>/dev/null || true
# 7. 清理构建缓存
log_step "清理构建缓存..."
docker builder prune -af 2>/dev/null || true
# 8. 系统级清理
log_step "执行系统级清理..."
docker system prune -af --volumes 2>/dev/null || true
# 9. 清理本地构建产物
log_step "清理本地构建产物..."
do_clean build 2>/dev/null || true
log_success "核弹级清理完成Docker 环境已完全重置。"
echo ""
echo -e "${CYAN}重新部署请执行:${NC}"
echo " ./deploy.sh deploy"
echo ""
}
#===============================================================================
# 数据重置 (只删除数据,不重新编译)
#===============================================================================
@ -1455,6 +1524,9 @@ show_help() {
full-reset ⚠️ 数据重置 (只删除数据库数据,不重新编译)
nuke ☢️ 核弹级清理 (彻底删除所有Docker资源
容器、镜像、数据卷、网络、构建缓存)
ssl <action> SSL 证书管理 (Let's Encrypt)
action: install - 安装 certbot
obtain - 申请证书
@ -1485,6 +1557,7 @@ show_help() {
./deploy.sh logs conversation 200 # 查看对话服务最近200行日志
./deploy.sh clean all # 清理所有构建产物和依赖
./deploy.sh full-reset # ⚠️ 重置所有数据库数据
./deploy.sh nuke # ☢️ 彻底删除所有Docker资源
./deploy.sh rebuild conversation # 重新构建对话服务镜像 (使用缓存)
./deploy.sh rebuild conversation --no-cache # 完全重新构建 (忽略缓存)
./deploy.sh db init # 初始化数据库 (首次部署)
@ -1550,6 +1623,9 @@ main() {
full-reset)
do_full_reset
;;
nuke)
do_nuke
;;
ssl)
do_ssl "$@"
;;