diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..229a60a --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,23 @@ +# D-Case 一键部署与启动脚本 + +## 1. 环境准备 +确保您的机器已安装: +- Docker +- Docker Compose + +## 2. 一键启动 +在项目根目录下执行: +```bash +chmod +x startup.sh +./startup.sh +``` + +## 3. 访问地址 +- **前端页面**: `http://<服务器IP>:80` +- **后端接口**: `http://<服务器IP>:8000` +- **数据库**: MySQL 容器内部运行 + +## 4. 核心配置文件 +- `docker-compose.yml`: 定义容器拓扑。 +- `startup.sh`: 自动化安装与启动。 +- `nginx.conf`: 处理前端路由与反向代理。 diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..c0384db --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,10 @@ +fastapi +uvicorn +sqlalchemy +pymysql +cryptography +pydantic +requests +python-multipart +python-dotenv +uuid diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..140cc27 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,40 @@ +version: '3.8' + +services: + # 后端服务 + backend: + build: + context: . + dockerfile: backend.Dockerfile + ports: + - "8000:8000" + environment: + - DATABASE_URL=mysql+pymysql://user:pass@db:3306/dcase + - FEISHU_APP_ID=${FEISHU_APP_ID} + - FEISHU_APP_SECRET=${FEISHU_APP_SECRET} + depends_on: + - db + + # 前端服务 + frontend: + build: + context: . + dockerfile: frontend.Dockerfile + ports: + - "80:80" + depends_on: + - backend + + # 数据库 + db: + image: mysql:8.0 + environment: + - MYSQL_DATABASE=dcase + - MYSQL_USER=user + - MYSQL_PASSWORD=pass + - MYSQL_ROOT_PASSWORD=rootpass + volumes: + - mysql_data:/var/lib/mysql + +volumes: + mysql_data: diff --git a/startup.sh b/startup.sh new file mode 100755 index 0000000..49b125a --- /dev/null +++ b/startup.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# D-Case 一键启动脚本 (Local Version) + +echo "🚀 正在启动 D-Case 平台..." + +# 1. 检查并安装前端依赖 +if [ ! -d "node_modules" ]; then + echo "📦 正在安装前端依赖..." + npm install +fi + +# 2. 检查并安装后端依赖 +if [ ! -d "backend/venv" ]; then + echo "🐍 正在创建 Python 虚拟环境..." + python3 -m venv backend/venv + source backend/venv/bin/activate + pip install -r backend/requirements.txt +else + source backend/venv/bin/activate +fi + +# 3. 启动后端 (后台运行) +echo "🔥 正在启动后端服务 (Port: 8000)..." +python3 backend/main.py & +BACKEND_PID=$! + +# 4. 启动前端 +echo "🌐 正在启动前端服务 (Vite)..." +npm run dev & +FRONTEND_PID=$! + +# 捕获退出信号 +trap "kill $BACKEND_PID $FRONTEND_PID; exit" SIGINT SIGTERM + +echo "✅ 启动成功!" +echo "👉 前端地址: http://localhost:5173" +echo "👉 后端地址: http://localhost:8000" +echo "按下 Ctrl+C 停止所有服务。" + +wait