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:
parent
3b6d178ef7
commit
47d5434c98
76
deploy.sh
76
deploy.sh
|
|
@ -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 "$@"
|
||||
;;
|
||||
|
|
|
|||
Loading…
Reference in New Issue