#!/bin/bash # 数学作业批改系统 - 快速部署脚本 set -e echo "==========================================" echo " 数学作业批改系统 - 快速部署" echo "==========================================" echo "" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 检查 Docker if ! command -v docker &> /dev/null; then echo -e "${RED}✗ Docker 未安装${NC}" echo "请先安装 Docker: https://docs.docker.com/get-docker/" exit 1 fi echo -e "${GREEN}✓ Docker 已安装${NC}" echo "" # 检查 API 密钥 check_env_vars() { local missing_vars=() # 从 Dockerfile 中提取环境变量 if grep -q "YOUR_KEY_HERE\|YOUR_WORKSPACE_ID" assets/Dockerfile; then echo -e "${YELLOW}⚠ 警告:检测到未配置的 API 密钥${NC}" echo "" echo "请在 assets/Dockerfile 中配置以下环境变量:" echo " 1. COZE_WORKLOAD_IDENTITY_API_KEY" echo " 2. LLM_API_KEY" echo " 3. COZE_API_KEY" echo " 4. COZE_INTEGRATION_API_KEY" echo " 5. COZE_WORKSPACE_ID" echo "" read -p "是否继续构建?(将无法正常使用 LLM 功能)[y/N] " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo -e "${RED}部署已取消${NC}" exit 1 fi fi } check_env_vars # 构建镜像 echo -e "${YELLOW}正在构建 Docker 镜像...${NC}" echo "这可能需要 5-10 分钟,请耐心等待..." echo "" docker build -f assets/Dockerfile -t math-correction:latest . if [ $? -eq 0 ]; then echo "" echo -e "${GREEN}✓ 镜像构建成功!${NC}" echo "" else echo "" echo -e "${RED}✗ 镜像构建失败${NC}" echo "请检查错误信息并重试" exit 1 fi # 运行容器 echo -e "${YELLOW}正在启动容器...${NC}" docker run -d \ --name math-correction \ -p 8000:8000 \ --restart unless-stopped \ math-correction:latest if [ $? -eq 0 ]; then echo "" echo -e "${GREEN}✓ 容器启动成功!${NC}" echo "" else echo "" echo -e "${RED}✗ 容器启动失败${NC}" echo "请检查端口 8000 是否被占用" exit 1 fi # 等待服务启动 echo -e "${YELLOW}等待服务启动...${NC}" sleep 5 # 测试服务 echo "" echo -e "${YELLOW}正在测试服务...${NC}" if curl -s http://localhost:8000/health > /dev/null 2>&1; then echo -e "${GREEN}✓ 服务运行正常${NC}" else echo -e "${YELLOW}⚠ 服务可能还在启动中,请稍后测试${NC}" fi # 显示容器信息 echo "" echo "==========================================" echo " 部署完成!" echo "==========================================" echo "" echo "容器信息:" echo " 名称: math-correction" echo " 端口: 8000" echo " 状态: $(docker inspect --format='{{.State.Status}}' math-correction)" echo "" echo "常用命令:" echo " 查看日志: docker logs -f math-correction" echo " 停止容器: docker stop math-correction" echo " 启动容器: docker start math-correction" echo " 重启容器: docker restart math-correction" echo " 删除容器: docker rm -f math-correction" echo "" echo "测试接口:" echo " curl http://localhost:8000/health" echo "" echo "API 文档:" echo " 请参考 DEPLOYMENT.md" echo "" echo -e "${GREEN}✓ 部署成功!${NC}"