42 lines
1004 B
Bash
Executable File
42 lines
1004 B
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
set -euo pipefail
|
||
|
||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
||
cd "$ROOT_DIR"
|
||
|
||
echo "==> 构建并启动所有服务..."
|
||
docker compose up --build -d
|
||
|
||
echo "==> 当前容器状态"
|
||
docker compose ps
|
||
|
||
if [[ -f ".env" ]]; then
|
||
echo "==> 检测到 .env(将覆盖 .env.example 中的同名 AI 变量)"
|
||
else
|
||
echo "==> AI 配置来自 .env.example(请填写 QWEN_API_KEY;亦可复制为 .env 再填写)"
|
||
fi
|
||
|
||
wait_http() {
|
||
local url=$1
|
||
local label=$2
|
||
local i=0
|
||
while [[ $i -lt 45 ]]; do
|
||
if curl -sf "$url" >/dev/null 2>&1; then
|
||
echo "${label}: ok"
|
||
return 0
|
||
fi
|
||
sleep 1
|
||
i=$((i + 1))
|
||
done
|
||
echo "${label}: unreachable(请确认容器已就绪,或执行: curl -v ${url})"
|
||
return 1
|
||
}
|
||
|
||
echo "==> 健康检查(后端 8866,前端 Nginx 8173;最多等待约 45s)"
|
||
wait_http "http://localhost:8866/health" "backend" || true
|
||
wait_http "http://localhost:8173/health" "frontend (nginx)" || true
|
||
|
||
echo "==> 启动完成"
|