test: 更新启动脚本
This commit is contained in:
65
start.sh
65
start.sh
@@ -9,9 +9,17 @@ FRONTEND_DIR="${FRONTEND_DIR:-$ROOT_DIR/frontend}"
|
|||||||
RUN_DIR="${RUN_DIR:-$BACKEND_DIR/.run}"
|
RUN_DIR="${RUN_DIR:-$BACKEND_DIR/.run}"
|
||||||
|
|
||||||
START_REDIS="${START_REDIS:-1}"
|
START_REDIS="${START_REDIS:-1}"
|
||||||
|
START_RABBITMQ="${START_RABBITMQ:-1}"
|
||||||
START_BACKEND="${START_BACKEND:-1}"
|
START_BACKEND="${START_BACKEND:-1}"
|
||||||
START_FRONTEND="${START_FRONTEND:-1}"
|
START_FRONTEND="${START_FRONTEND:-1}"
|
||||||
|
|
||||||
|
# docker compose (for dependencies like RabbitMQ):
|
||||||
|
# - START_RABBITMQ=1|0 (default 1)
|
||||||
|
# - COMPOSE_FILE=path (default ./docker-compose.yml)
|
||||||
|
# - STOP_DOCKER=1|0 (default 0; when 1, stop started compose services on exit)
|
||||||
|
COMPOSE_FILE="${COMPOSE_FILE:-$ROOT_DIR/docker-compose.yml}"
|
||||||
|
STOP_DOCKER="${STOP_DOCKER:-0}"
|
||||||
|
|
||||||
# frontend:
|
# frontend:
|
||||||
# - FRONTEND_INSTALL=auto|1|0 (default auto, only when node_modules missing)
|
# - FRONTEND_INSTALL=auto|1|0 (default auto, only when node_modules missing)
|
||||||
# - FRONTEND_SCRIPT=dev|preview|build (default dev)
|
# - FRONTEND_SCRIPT=dev|preview|build (default dev)
|
||||||
@@ -60,6 +68,11 @@ cleanup() {
|
|||||||
taskkill //PID "$BACKEND_PID" //T //F >/dev/null 2>&1 || true
|
taskkill //PID "$BACKEND_PID" //T //F >/dev/null 2>&1 || true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$STOP_DOCKER" = "1" ] && [ -n "${COMPOSE_CMD:-}" ] && [ -f "$COMPOSE_FILE" ]; then
|
||||||
|
echo "[start.sh] Stopping docker compose services"
|
||||||
|
$COMPOSE_CMD -f "$COMPOSE_FILE" stop >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
trap cleanup INT TERM EXIT
|
trap cleanup INT TERM EXIT
|
||||||
|
|
||||||
@@ -75,6 +88,54 @@ if [ "$START_FRONTEND" = "1" ]; then
|
|||||||
require_cmd npm
|
require_cmd npm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
detect_compose() {
|
||||||
|
if command -v docker >/dev/null 2>&1; then
|
||||||
|
if docker compose version >/dev/null 2>&1; then
|
||||||
|
COMPOSE_CMD="docker compose"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if command -v docker-compose >/dev/null 2>&1; then
|
||||||
|
COMPOSE_CMD="docker-compose"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
start_rabbitmq_compose() {
|
||||||
|
if [ ! -f "$COMPOSE_FILE" ]; then
|
||||||
|
echo "[start.sh] $COMPOSE_FILE not found; skip starting RabbitMQ via docker compose"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if ! detect_compose; then
|
||||||
|
echo "[start.sh] docker compose not found; skip starting RabbitMQ via docker compose"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[start.sh] Starting RabbitMQ via docker compose ($COMPOSE_FILE)"
|
||||||
|
$COMPOSE_CMD -f "$COMPOSE_FILE" up -d rabbitmq
|
||||||
|
|
||||||
|
# Best-effort readiness check.
|
||||||
|
if command -v docker >/dev/null 2>&1; then
|
||||||
|
local rabbit_cid=""
|
||||||
|
rabbit_cid="$($COMPOSE_CMD -f "$COMPOSE_FILE" ps -q rabbitmq 2>/dev/null || true)"
|
||||||
|
if [ -z "$rabbit_cid" ]; then
|
||||||
|
rabbit_cid="my-rabbitmq"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local i=0
|
||||||
|
while [ "$i" -lt 30 ]; do
|
||||||
|
if docker exec "$rabbit_cid" rabbitmq-diagnostics -q ping >/dev/null 2>&1; then
|
||||||
|
echo "[start.sh] RabbitMQ ready"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
i=$((i + 1))
|
||||||
|
done
|
||||||
|
echo "[start.sh] RabbitMQ may not be ready yet; continuing anyway"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
start_redis() {
|
start_redis() {
|
||||||
if ! command -v redis-server >/dev/null 2>&1; then
|
if ! command -v redis-server >/dev/null 2>&1; then
|
||||||
echo "[start.sh] redis-server not found; skip starting Redis"
|
echo "[start.sh] redis-server not found; skip starting Redis"
|
||||||
@@ -118,6 +179,10 @@ start_frontend_bg() {
|
|||||||
echo "[start.sh] Frontend PID: $FRONTEND_PID"
|
echo "[start.sh] Frontend PID: $FRONTEND_PID"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if [ "$START_RABBITMQ" = "1" ] && [ "$START_BACKEND" = "1" ]; then
|
||||||
|
start_rabbitmq_compose
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$START_REDIS" = "1" ] && [ "$START_BACKEND" = "1" ]; then
|
if [ "$START_REDIS" = "1" ] && [ "$START_BACKEND" = "1" ]; then
|
||||||
start_redis
|
start_redis
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user