PhysicsCorrection/deploy.sh

90 lines
2.1 KiB
Bash

#!/bin/bash
# Docker 快速部署脚本
set -e
echo "=========================================="
echo "数学作业批改系统 - Docker 部署脚本"
echo "=========================================="
echo ""
# 检查 Docker 是否安装
if ! command -v docker &> /dev/null; then
echo "❌ Docker 未安装,请先安装 Docker"
exit 1
fi
echo "✅ Docker 已安装"
echo ""
# 检查旧容器
if docker ps -a | grep -q math-grading; then
echo "⚠️ 检测到旧容器 math-grading"
read -p "是否删除旧容器? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "🗑️ 删除旧容器..."
docker rm -f math-grading
else
echo "❌ 取消部署"
exit 1
fi
fi
echo "🏗️ 开始构建镜像..."
docker build -t math-grading:latest .
if [ $? -eq 0 ]; then
echo "✅ 镜像构建成功"
else
echo "❌ 镜像构建失败"
exit 1
fi
echo ""
echo "🚀 启动容器..."
# 创建日志和缓存目录
mkdir -p logs cache
# 启动容器
docker run -d \
--name math-grading \
-p 8000:8000 \
-v $(pwd)/logs:/app/work/logs \
-v $(pwd)/cache:/tmp/homework_cache \
--restart unless-stopped \
math-grading:latest
if [ $? -eq 0 ]; then
echo "✅ 容器启动成功"
else
echo "❌ 容器启动失败"
exit 1
fi
echo ""
echo "⏳ 等待服务启动..."
sleep 5
echo ""
echo "=========================================="
echo "部署完成!"
echo "=========================================="
echo ""
echo "服务地址: http://localhost:8000"
echo ""
echo "常用命令:"
echo " 查看日志: docker logs -f math-grading"
echo " 停止服务: docker stop math-grading"
echo " 启动服务: docker start math-grading"
echo " 重启服务: docker restart math-grading"
echo ""
echo "测试接口:"
echo " curl -X POST http://localhost:8000/stream_run \\"
echo " -H 'Content-Type: application/json' \\"
echo " -d '{\"student_homework\": [{\"student_id\": 1, \"homework_images\": [\"https://example.com/image.jpg\"]}]}'"
echo ""
echo "详细文档: DOCKER_DEPLOY.md"
echo ""