72 lines
1.7 KiB
Bash
72 lines
1.7 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# YG-Datasets 一键启动脚本
|
||
|
|
|
||
|
|
echo "========================================="
|
||
|
|
echo " YG-Datasets 一键启动"
|
||
|
|
echo "========================================="
|
||
|
|
|
||
|
|
# 颜色定义
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
NC='\033[0m' # No Color
|
||
|
|
|
||
|
|
# 检查并创建必要目录
|
||
|
|
echo -e "${YELLOW}[1/5] 检查环境...${NC}"
|
||
|
|
mkdir -p backend/uploads
|
||
|
|
mkdir -p frontend
|
||
|
|
|
||
|
|
# 创建并激活 Python 虚拟环境
|
||
|
|
echo -e "${YELLOW}[2/5] 创建 Python 虚拟环境...${NC}"
|
||
|
|
cd backend
|
||
|
|
if [ ! -d "venv" ]; then
|
||
|
|
python3 -m venv venv
|
||
|
|
fi
|
||
|
|
source venv/bin/activate
|
||
|
|
|
||
|
|
# 安装后端依赖
|
||
|
|
echo -e "${YELLOW}[3/5] 安装后端依赖...${NC}"
|
||
|
|
pip install -r requirements.txt
|
||
|
|
|
||
|
|
# 安装前端依赖
|
||
|
|
echo -e "${YELLOW}[4/5] 安装前端依赖...${NC}"
|
||
|
|
cd ../frontend
|
||
|
|
if [ ! -d "node_modules" ]; then
|
||
|
|
npm install
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 启动后端
|
||
|
|
echo -e "${YELLOW}[5/5] 启动服务...${NC}"
|
||
|
|
cd ../backend
|
||
|
|
echo -e "${GREEN}启动后端 (端口 8000)...${NC}"
|
||
|
|
export HOST="0.0.0.0"
|
||
|
|
export DATABASE_URL="sqlite+aiosqlite:///./ygdataset.db"
|
||
|
|
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 &
|
||
|
|
BACKEND_PID=$!
|
||
|
|
|
||
|
|
# 等待后端启动
|
||
|
|
sleep 3
|
||
|
|
|
||
|
|
# 启动前端
|
||
|
|
cd ../frontend
|
||
|
|
echo -e "${GREEN}启动前端 (端口 3000)...${NC}"
|
||
|
|
npm run dev -- --host 0.0.0.0 &
|
||
|
|
FRONTEND_PID=$!
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "========================================="
|
||
|
|
echo -e " ${GREEN}启动完成!${NC}"
|
||
|
|
echo "========================================="
|
||
|
|
echo " 后端: http://localhost:8000"
|
||
|
|
echo " API文档: http://localhost:8000/docs"
|
||
|
|
echo " 前端: http://localhost:3000"
|
||
|
|
echo ""
|
||
|
|
echo " 按 Ctrl+C 停止所有服务"
|
||
|
|
echo "========================================="
|
||
|
|
|
||
|
|
# 捕获 Ctrl+C 并停止所有服务
|
||
|
|
trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit" INT TERM
|
||
|
|
|
||
|
|
# 等待
|
||
|
|
wait
|