init
This commit is contained in:
51
stop-infra.sh
Executable file
51
stop-infra.sh
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# stop-infra.sh — 停止 Docker 基础设施容器
|
||||
#
|
||||
# 用法:
|
||||
# ./stop-infra.sh # 停止 Redis / Kafka / Etcd
|
||||
# ./stop-infra.sh redis # 只停止 Redis
|
||||
# ./stop-infra.sh kafka # 只停止 Kafka
|
||||
# ./stop-infra.sh etcd # 只停止 Etcd
|
||||
#
|
||||
# 注意:仅停止容器,不删除数据。重新启动执行: 03-start-infra.sh
|
||||
# =============================================================================
|
||||
set -euo pipefail
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh"
|
||||
require_docker_running
|
||||
init_script_log # ← 脚本执行日志
|
||||
|
||||
TARGET="${1:-all}"
|
||||
|
||||
_stop_container() {
|
||||
local label="$1" cname="$2"
|
||||
# 先停日志收集进程
|
||||
stop_docker_logger "$cname"
|
||||
if docker ps --format '{{.Names}}' | grep -q "^${cname}$"; then
|
||||
docker stop "$cname" > /dev/null && success "$label 容器已停止 (container=$cname)"
|
||||
else
|
||||
warn "$label 容器未在运行 (container=$cname)"
|
||||
fi
|
||||
}
|
||||
|
||||
case "$TARGET" in
|
||||
all)
|
||||
step "停止所有 Docker 基础设施"
|
||||
_stop_container "LiveKit" "dev-livekit"
|
||||
_stop_container "Kafka" "dev-kafka"
|
||||
_stop_container "Redis" "dev-redis"
|
||||
_stop_container "Etcd" "dev-etcd"
|
||||
echo ""
|
||||
success "所有 Docker 容器已停止(数据已保留)"
|
||||
echo -e " 重新启动: ${CYAN}./deploy-test/03-start-infra.sh${NC}"
|
||||
;;
|
||||
redis) _stop_container "Redis" "dev-redis" ;;
|
||||
kafka) _stop_container "Kafka" "dev-kafka" ;;
|
||||
etcd) _stop_container "Etcd" "dev-etcd" ;;
|
||||
livekit) _stop_container "LiveKit" "dev-livekit" ;;
|
||||
*)
|
||||
error "未知组件: $TARGET"
|
||||
echo "可用: redis, kafka, etcd, livekit, all"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user