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