101 lines
2.9 KiB
Bash
Executable File
101 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env sh
|
||
set -eu
|
||
|
||
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
cd "$ROOT_DIR"
|
||
|
||
MODE="${1:-up}"
|
||
|
||
if ! command -v docker >/dev/null 2>&1; then
|
||
echo "Docker 未安装或不可用。请先安装 Docker Desktop。" >&2
|
||
exit 1
|
||
fi
|
||
|
||
if ! docker info >/dev/null 2>&1; then
|
||
echo "Docker daemon 未启动。请先启动 Docker Desktop。" >&2
|
||
exit 1
|
||
fi
|
||
|
||
if ! command -v docker >/dev/null 2>&1 || ! docker compose version >/dev/null 2>&1; then
|
||
echo "docker compose 不可用,请升级 Docker Desktop。" >&2
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -f "backend/.env" ]; then
|
||
cp "backend/.env.example" "backend/.env"
|
||
echo "已生成 backend/.env(请把 MYSQL_PASSWORD / OPENAI_API_KEY 改成你的值)"
|
||
fi
|
||
|
||
case "$MODE" in
|
||
up)
|
||
echo "启动中:构建并启动所有容器(随后将跟随日志,按 Ctrl+C 退出跟随)..."
|
||
docker compose up --build -d
|
||
;;
|
||
-d|detached)
|
||
echo "启动中:构建并后台启动所有容器..."
|
||
docker compose up --build -d
|
||
;;
|
||
down)
|
||
docker compose down
|
||
exit 0
|
||
;;
|
||
ps)
|
||
docker compose ps
|
||
exit 0
|
||
;;
|
||
logs)
|
||
docker compose logs --tail=200 backend frontend
|
||
exit 0
|
||
;;
|
||
follow|f)
|
||
docker compose logs -f --tail=200 backend frontend
|
||
exit 0
|
||
;;
|
||
*)
|
||
echo "用法:"
|
||
echo " sh dev.sh # 启动并跟随日志(默认)"
|
||
echo " sh dev.sh -d # 后台启动"
|
||
echo " sh dev.sh follow # 跟随日志"
|
||
echo " sh dev.sh logs # 打印最近日志"
|
||
echo " sh dev.sh ps # 查看容器状态"
|
||
echo " sh dev.sh down # 停止并清理"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
echo ""
|
||
echo "容器状态:"
|
||
docker compose ps
|
||
|
||
echo ""
|
||
echo "后端最近日志(backend,tail=120):"
|
||
docker compose logs --tail=120 backend || true
|
||
|
||
echo ""
|
||
echo "前端最近日志(frontend,tail=120):"
|
||
docker compose logs --tail=120 frontend || true
|
||
|
||
echo ""
|
||
echo "快速自检(HTTP):"
|
||
(
|
||
curl -fsS "http://localhost:8000/docs" >/dev/null 2>&1 && echo "- backend: OK (http://localhost:8000/docs)" || echo "- backend: FAIL (检查 backend 日志/数据库连通性)"
|
||
curl -fsS "http://localhost:3001" >/dev/null 2>&1 && echo "- frontend: OK (http://localhost:3001)" || echo "- frontend: FAIL (检查 frontend 日志)"
|
||
curl -fsS "http://localhost:3001/api/metrics/overview" >/dev/null 2>&1 && echo "- api-proxy: OK (/api/metrics/overview)" || echo "- api-proxy: FAIL (通常是 backend 500)"
|
||
) || true
|
||
|
||
echo ""
|
||
echo "已启动:"
|
||
echo "- 前端: http://localhost:3001"
|
||
echo "- 后端 Swagger: http://localhost:8000/docs"
|
||
echo "- Milvus: localhost:19530"
|
||
echo ""
|
||
echo "跟随日志:sh dev.sh follow (或 docker compose logs -f --tail=200 backend frontend)"
|
||
echo "停止:docker compose down"
|
||
|
||
if [ "$MODE" = "up" ]; then
|
||
echo ""
|
||
echo "开始跟随日志(Ctrl+C 可退出跟随,不会停止容器)..."
|
||
docker compose logs -f --tail=200 backend frontend
|
||
fi
|
||
|