hy-app-monitor/localbox/restart_local_service.sh
2026-05-09 10:40:17 +08:00

126 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# shellcheck disable=SC1091
source "$SCRIPT_DIR/common.sh"
load_local_env
wait_for_docker
REBUILD=false
usage() {
cat <<'EOF'
用法:
./restart_local_service.sh live
./restart_local_service.sh --rebuild auth
./restart_local_service.sh golang
支持的服务:
gateway auth external other live order wallet console visual-monitor scheduling game-fruit golang
mysql redis mongo nacos zookeeper
rocketmq rocketmq-namesrv rocketmq-broker rocketmq-proxy
EOF
}
while [ "$#" -gt 0 ]; do
case "$1" in
--rebuild)
REBUILD=true
shift
;;
-h|--help)
usage
exit 0
;;
*)
break
;;
esac
done
if [ "$#" -ne 1 ]; then
usage >&2
exit 1
fi
SERVICE="$1"
if [ "$SERVICE" = "rocketmq-proxy" ]; then
SERVICE="rocketmq-proxy"
fi
case "$SERVICE" in
gateway|auth|external|other|live|order|wallet|console|visual-monitor|scheduling|game-fruit|golang|mysql|redis|mongo|nacos|zookeeper|rocketmq|rocketmq-namesrv|rocketmq-broker|rocketmq-proxy)
;;
*)
echo "unknown service: $SERVICE" >&2
usage >&2
exit 1
;;
esac
if [ "$REBUILD" = true ] && is_java_service "$SERVICE"; then
"$SCRIPT_DIR/build_local_backend.sh" "$SERVICE"
fi
if [ "$SERVICE" = "rocketmq" ]; then
compose up -d --remove-orphans --force-recreate rocketmq-namesrv rocketmq-init rocketmq-broker rocketmq-proxy
elif [ "$SERVICE" = "other" ] && ! local_rocketmq_disabled; then
compose up -d --remove-orphans rocketmq-namesrv rocketmq-init rocketmq-broker rocketmq-proxy
wait_local_rocketmq
compose up -d --no-deps --force-recreate "$SERVICE"
elif [ "$SERVICE" = "rocketmq-broker" ]; then
compose up -d --remove-orphans rocketmq-namesrv rocketmq-init rocketmq-broker
elif [ "$SERVICE" = "rocketmq-proxy" ]; then
compose up -d --remove-orphans rocketmq-namesrv rocketmq-init rocketmq-broker rocketmq-proxy
else
compose up -d --no-deps --force-recreate "$SERVICE"
fi
case "$SERVICE" in
gateway|auth|external|other|live|order|wallet|console|visual-monitor|scheduling|game-fruit|golang)
wait_service_port "$SERVICE" 120
;;
mysql)
wait_container_healthy chatapp3-local-mysql 120
;;
redis)
wait_container_healthy chatapp3-local-redis 120
;;
mongo)
wait_container_healthy chatapp3-local-mongo 120
;;
nacos)
require_env LIKEI_LOCAL_NACOS_PORT
wait_http "http://127.0.0.1:${LIKEI_LOCAL_NACOS_PORT}/nacos/" 120
;;
zookeeper)
wait_container_healthy chatapp3-local-zookeeper 120
;;
rocketmq)
wait_local_rocketmq
;;
rocketmq-namesrv)
require_env LIKEI_LOCAL_ROCKETMQ_NAMESRV_PORT
wait_container_healthy chatapp3-local-rocketmq-namesrv 120
wait_tcp_port 127.0.0.1 "${LIKEI_LOCAL_ROCKETMQ_NAMESRV_PORT}" 120
;;
rocketmq-broker)
wait_container_healthy chatapp3-local-rocketmq-broker 120
wait_rocketmq_cluster 120
;;
rocketmq-proxy)
require_env LIKEI_LOCAL_ROCKETMQ_PROXY_GRPC_PORT
wait_container_healthy chatapp3-local-rocketmq-proxy 120
wait_tcp_port 127.0.0.1 "${LIKEI_LOCAL_ROCKETMQ_PROXY_GRPC_PORT}" 120
;;
esac
if [ "$SERVICE" = "rocketmq" ]; then
compose ps rocketmq-namesrv rocketmq-broker rocketmq-proxy
else
compose ps "$SERVICE"
fi