90 lines
2.1 KiB
Bash
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 ""
|