#!/bin/bash # 设置脚本在遇到错误时退出 set -e # 检查参数 if [ "$1" = "stop" ]; then echo "开始停止并清理 Docker 服务..." # 检查 docker-compose 文件是否存在 if [ ! -f "docker-compose-aitest-remote.yml" ]; then echo "⚠️ docker-compose-aitest-remote.yml 文件不存在" echo "尝试重新下载..." curl -o docker-compose-aitest-remote.yml https://try.pig4cloud.com/docker-compose-aitest-remote.yml if [ $? -ne 0 ]; then echo "❌ 下载失败,无法执行清理操作" exit 1 fi fi # 停止并删除容器 echo "正在停止容器..." docker compose -f docker-compose-aitest-remote.yml down # 删除所有相关的镜像 echo "正在删除相关镜像..." # 获取 docker-compose 文件中定义的所有镜像 IMAGES=$(docker compose -f docker-compose-aitest-remote.yml config --images 2>/dev/null) if [ -n "$IMAGES" ]; then echo "发现以下镜像:" echo "$IMAGES" echo "$IMAGES" | xargs docker rmi -f 2>/dev/null || true fi # 删除下载的 docker-compose 文件 echo "正在删除配置文件..." rm -f docker-compose-aitest-remote.yml echo "🎉 清理完成!" echo "所有相关的容器、镜像和配置文件已被删除" exit 0 fi # 原有的启动逻辑 echo "开始下载 docker-compose-aitest-remote.yml..." # 下载远程 docker-compose 文件 curl -o docker-compose-aitest-remote.yml https://try.pig4cloud.com/docker-compose-aitest-remote.yml if [ $? -eq 0 ]; then echo "✅ docker-compose-aitest-remote.yml 下载成功!" else echo "❌ 下载失败,请检查网络连接" exit 1 fi echo "开始构建和启动 Docker 服务..." # 使用下载的 docker-compose 文件构建和启动服务 docker compose -f docker-compose-aitest-remote.yml build && docker compose -f docker-compose-aitest-remote.yml up -d if [ $? -eq 0 ]; then echo "✅ Docker 服务启动成功!" echo "" echo "等待服务初始化..." # 监控日志,当看到"初始化完毕"时停止 docker compose -f docker-compose-aitest-remote.yml logs -f & LOGS_PID=$! # 循环检查日志内容 while kill -0 $LOGS_PID 2>/dev/null; do if docker compose -f docker-compose-aitest-remote.yml logs --tail=10 2>/dev/null | grep -q "初始化完毕"; then kill $LOGS_PID 2>/dev/null break fi sleep 2 done echo "" echo "🎉 服务初始化完成!" echo "🌐 AI UI 访问地址: http://localhost:38080" echo "" echo "💡 提示: 使用 '$0 stop' 命令可以停止服务并清理所有相关资源" else echo "❌ Docker 服务启动失败" exit 1 fi