#!/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 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|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|golang) wait_service_health "$SERVICE" 180 ;; 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