54 lines
1.4 KiB
Bash
Executable File
54 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# 餐智库一键启动脚本
|
|
# 同时启动后端 API 服务和前端开发服务器
|
|
|
|
set -e
|
|
|
|
BACKEND_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
FRONTEND_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
|
|
echo "=== 餐智库启动 ==="
|
|
|
|
# 检查后端虚拟环境
|
|
if [ ! -d "$BACKEND_DIR/venv" ]; then
|
|
echo "[后端] 创建虚拟环境..."
|
|
python3 -m venv "$BACKEND_DIR/venv"
|
|
echo "[后端] 安装依赖..."
|
|
"$BACKEND_DIR/venv/bin/pip" install -r "$BACKEND_DIR/requirements.txt" -q
|
|
echo "[后端] 安装 Playwright 浏览器..."
|
|
"$BACKEND_DIR/venv/bin/playwright" install chromium
|
|
fi
|
|
|
|
# 检查 .env 文件
|
|
if [ ! -f "$BACKEND_DIR/.env" ]; then
|
|
echo "[后端] 复制 .env.example -> .env"
|
|
cp "$BACKEND_DIR/.env.example" "$BACKEND_DIR/.env"
|
|
echo "[提示] 请编辑 backend/.env 填入 DASHSCOPE_API_KEY"
|
|
fi
|
|
|
|
# 启动后端
|
|
echo "[后端] 启动 API 服务 (端口 8765)..."
|
|
"$BACKEND_DIR/venv/bin/python" "$BACKEND_DIR/app.py" &
|
|
BACKEND_PID=$!
|
|
echo "[后端] PID=$BACKEND_PID"
|
|
|
|
# 等待后端就绪
|
|
sleep 2
|
|
|
|
# 启动前端
|
|
echo "[前端] 启动开发服务器 (端口 3000)..."
|
|
cd "$FRONTEND_DIR"
|
|
npm run dev &
|
|
FRONTEND_PID=$!
|
|
echo "[前端] PID=$FRONTEND_PID"
|
|
|
|
echo ""
|
|
echo "=== 启动完成 ==="
|
|
echo "前端: http://localhost:3000"
|
|
echo "后端: http://localhost:8765/api/health"
|
|
echo ""
|
|
echo "按 Ctrl+C 停止所有服务"
|
|
|
|
trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit" INT TERM
|
|
wait
|