PhysicsCorrection/quick-start.sh

129 lines
3.3 KiB
Bash

#!/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}"