94 lines
3.0 KiB
Bash
94 lines
3.0 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
set -e
|
|||
|
|
|
|||
|
|
echo "=== 啟動巡樓開發環境服務 (不含 infra) ==="
|
|||
|
|
echo "前置條件: infra (Mongo/Redis) 必須已啟動,請先執行: make dev-infra"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 檢查 infra 是否運行
|
|||
|
|
if ! docker compose -f infra/docker-compose.yml ps --status running 2>/dev/null | grep -q "mongo\|redis"; then
|
|||
|
|
echo "⚠️ 警告: infra (Mongo/Redis) 似乎未運行"
|
|||
|
|
echo " 請先執行: make dev-infra"
|
|||
|
|
echo ""
|
|||
|
|
read -p "是否繼續啟動服務? (y/N): " -n 1 -r
|
|||
|
|
echo
|
|||
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 1. 啟動 Go gateway (port 8890) - 背景執行
|
|||
|
|
echo "[1/4] 啟動 Go gateway (:8890)..."
|
|||
|
|
cd backend
|
|||
|
|
if [ ! -f etc/gateway.yaml ]; then
|
|||
|
|
echo " ✗ 找不到 etc/gateway.yaml"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
nohup go run . -f etc/gateway.yaml > /tmp/haixun-gateway.log 2>&1 &
|
|||
|
|
GATEWAY_PID=$!
|
|||
|
|
cd ..
|
|||
|
|
sleep 2
|
|||
|
|
if kill -0 $GATEWAY_PID 2>/dev/null; then
|
|||
|
|
echo " ✓ Gateway 已啟動 (PID: $GATEWAY_PID, log: /tmp/haixun-gateway.log)"
|
|||
|
|
else
|
|||
|
|
echo " ✗ Gateway 啟動失敗,查看日誌: cat /tmp/haixun-gateway.log"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 2. Go job worker 已內嵌在 gateway(etc/gateway.yaml JobWorker.Enabled=true)
|
|||
|
|
echo "[2/4] Go job worker..."
|
|||
|
|
echo " ✓ 使用 gateway 內嵌 worker(勿另開 cmd/worker,避免殘留舊進程搶 job)"
|
|||
|
|
|
|||
|
|
# 3. 啟動 Node worker (style-8d) - 背景執行
|
|||
|
|
echo "[3/4] 啟動 Node worker (style-8d)..."
|
|||
|
|
cd backend/worker
|
|||
|
|
if [ ! -f package.json ]; then
|
|||
|
|
echo " ✗ 找不到 package.json"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
export HAIXUN_WORKER_SECRET=haixun-dev-worker-secret
|
|||
|
|
export HAIXUN_BACKEND_URL=http://127.0.0.1:8890
|
|||
|
|
nohup npm run style-8d > /tmp/haixun-node-worker.log 2>&1 &
|
|||
|
|
NODE_WORKER_PID=$!
|
|||
|
|
cd ../..
|
|||
|
|
sleep 3
|
|||
|
|
if kill -0 $NODE_WORKER_PID 2>/dev/null; then
|
|||
|
|
echo " ✓ Node worker 已啟動 (PID: $NODE_WORKER_PID, log: /tmp/haixun-node-worker.log)"
|
|||
|
|
else
|
|||
|
|
echo " ✗ Node worker 啟動失敗,查看日誌: cat /tmp/haixun-node-worker.log"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 4. 啟動前端 dev server (port 5173) - 背景執行
|
|||
|
|
echo "[4/4] 啟動前端 dev server (:5173)..."
|
|||
|
|
cd frontend
|
|||
|
|
if [ ! -f package.json ]; then
|
|||
|
|
echo " ✗ 找不到 package.json"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
nohup npm run dev > /tmp/haixun-frontend.log 2>&1 &
|
|||
|
|
FRONTEND_PID=$!
|
|||
|
|
cd ..
|
|||
|
|
sleep 3
|
|||
|
|
if kill -0 $FRONTEND_PID 2>/dev/null; then
|
|||
|
|
echo " ✓ 前端已啟動 (PID: $FRONTEND_PID, log: /tmp/haixun-frontend.log)"
|
|||
|
|
else
|
|||
|
|
echo " ✗ 前端啟動失敗,查看日誌: cat /tmp/haixun-frontend.log"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "=== 所有開發環境服務已啟動 ==="
|
|||
|
|
echo ""
|
|||
|
|
echo "服務狀態:"
|
|||
|
|
echo " Gateway (API): http://localhost:8890 (PID: $GATEWAY_PID, 內嵌 Go worker)"
|
|||
|
|
echo " Node Worker: style-8d worker (PID: $NODE_WORKER_PID)"
|
|||
|
|
echo " Frontend (Vite): http://localhost:5173 (PID: $FRONTEND_PID)"
|
|||
|
|
echo ""
|
|||
|
|
echo "日誌檔案:"
|
|||
|
|
echo " Gateway: tail -f /tmp/haixun-gateway.log"
|
|||
|
|
echo " Node Worker: tail -f /tmp/haixun-node-worker.log"
|
|||
|
|
echo " Frontend: tail -f /tmp/haixun-frontend.log"
|
|||
|
|
echo ""
|
|||
|
|
echo "停止所有服務: ./stop-dev.sh"
|
|||
|
|
echo "查看 infra: make dev-infra # 或 docker compose -f infra/docker-compose.yml ps"
|