75 lines
2.0 KiB
Bash
75 lines
2.0 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||
|
|
BACKEND_DIR="$ROOT_DIR/haixun-backend"
|
||
|
|
RUN_DIR="$BACKEND_DIR/.run"
|
||
|
|
LOG_DIR="$RUN_DIR/logs"
|
||
|
|
COMPOSE_FILE="$BACKEND_DIR/deploy/docker-compose.yml"
|
||
|
|
CONFIG_FILE="${HAIXUN_BACKEND_CONFIG:-etc/gateway.yaml}"
|
||
|
|
BACKEND_URL="${HAIXUN_BACKEND_URL:-http://127.0.0.1:8890}"
|
||
|
|
WEB_URL="${HAIXUN_WEB_URL:-http://127.0.0.1:5173}"
|
||
|
|
|
||
|
|
mkdir -p "$RUN_DIR" "$LOG_DIR"
|
||
|
|
|
||
|
|
bash "$BACKEND_DIR/scripts/stop-all.sh"
|
||
|
|
|
||
|
|
if ! command -v docker >/dev/null 2>&1; then
|
||
|
|
echo "[start-all] docker not found; skip mongo/redis" >&2
|
||
|
|
else
|
||
|
|
echo "[start-all] starting mongo + redis..."
|
||
|
|
docker compose -f "$COMPOSE_FILE" up -d
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "[start-all] starting Go API ($CONFIG_FILE)..."
|
||
|
|
(
|
||
|
|
cd "$BACKEND_DIR"
|
||
|
|
go run ./gateway.go -f "$CONFIG_FILE"
|
||
|
|
) >"$LOG_DIR/api.log" 2>&1 &
|
||
|
|
echo $! >"$RUN_DIR/api.pid"
|
||
|
|
|
||
|
|
echo "[start-all] waiting for API health ($BACKEND_URL)..."
|
||
|
|
for _ in $(seq 1 40); do
|
||
|
|
if curl -fsS "$BACKEND_URL/api/v1/health" >/dev/null 2>&1; then
|
||
|
|
break
|
||
|
|
fi
|
||
|
|
if ! kill -0 "$(cat "$RUN_DIR/api.pid")" 2>/dev/null; then
|
||
|
|
echo "[start-all] API exited early; see $LOG_DIR/api.log" >&2
|
||
|
|
tail -n 20 "$LOG_DIR/api.log" >&2 || true
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
sleep 1
|
||
|
|
done
|
||
|
|
if ! curl -fsS "$BACKEND_URL/api/v1/health" >/dev/null 2>&1; then
|
||
|
|
echo "[start-all] API health check timed out; see $LOG_DIR/api.log" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [[ ! -d "$BACKEND_DIR/web/node_modules" ]]; then
|
||
|
|
echo "[start-all] installing web dependencies..."
|
||
|
|
(cd "$BACKEND_DIR/web" && npm install)
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "[start-all] starting web dev server..."
|
||
|
|
(
|
||
|
|
cd "$BACKEND_DIR/web"
|
||
|
|
npm run dev
|
||
|
|
) >"$LOG_DIR/web.log" 2>&1 &
|
||
|
|
echo $! >"$RUN_DIR/web.pid"
|
||
|
|
|
||
|
|
echo "[start-all] starting Node 8D worker..."
|
||
|
|
(
|
||
|
|
cd "$ROOT_DIR"
|
||
|
|
npm run worker:style-8d
|
||
|
|
) >"$LOG_DIR/worker.log" 2>&1 &
|
||
|
|
echo $! >"$RUN_DIR/worker.pid"
|
||
|
|
|
||
|
|
sleep 2
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "[start-all] all services started"
|
||
|
|
echo " API: $BACKEND_URL"
|
||
|
|
echo " Web: $WEB_URL"
|
||
|
|
echo " Logs: $LOG_DIR/{api,web,worker}.log"
|
||
|
|
echo " Stop: make -C haixun-backend stop-all"
|
||
|
|
echo " Status: make -C haixun-backend status-all"
|