#!/bin/bash # BtToxin Pipeline Docker 停止脚本 # 用法: ./docker-stop.sh [mode] set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 获取脚本所在目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" DOCKER_DIR="${SCRIPT_DIR}/docker" # 显示帮助信息 show_help() { echo "BtToxin Pipeline Docker 停止脚本" echo "" echo "用法: ./docker-stop.sh [mode] [--all]" echo "" echo "模式:" echo " simple - 停止单容器 Nginx 部署" echo " traefik - 停止 Traefik 多容器部署" echo " test - 停止测试配置" echo " dev - 停止开发模式" echo " --all - 停止所有模式" echo "" echo "示例:" echo " ./docker-stop.sh # 停止 simple 模式" echo " ./docker-stop.sh traefik # 停止 traefik 模式" echo " ./docker-stop.sh --all # 停止所有" echo "" } # 检查 Docker 是否运行 check_docker() { if ! docker info > /dev/null 2>&1; then echo -e "${RED}错误: Docker 未运行${NC}" exit 1 fi } # 停止指定模式 stop_mode() { local mode=$1 local compose_file="${DOCKER_DIR}/compose/docker-compose.${mode}.yml" if [ -f "$compose_file" ]; then echo -e "${YELLOW}停止 ${mode} 模式...${NC}" docker compose -f "$compose_file" down echo -e "${GREEN}✓ ${mode} 模式已停止${NC}" else echo -e "${YELLOW}⚠ ${mode} 模式的配置文件不存在${NC}" fi } # 主逻辑 main() { local mode="${1:-simple}" if [ "$mode" = "-h" ] || [ "$mode" = "--help" ]; then show_help exit 0 fi echo "==========================================" echo " BtToxin Pipeline Docker 停止脚本" echo "==========================================" echo "" # 检查 Docker check_docker # 停止所有模式 if [ "$mode" = "--all" ]; then echo -e "${YELLOW}停止所有模式...${NC}" stop_mode "simple" stop_mode "traefik" stop_mode "test" stop_mode "dev" else stop_mode "$mode" fi echo "" echo -e "${GREEN}完成!${NC}" } # 运行主函数 main "$@"