129 lines
3.3 KiB
Bash
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}"
|