啊呀

#!/bin/bash

# 配置文件
MAIN_COMPOSE_FILE="docker-compose.yml"
EXTRA_COMPOSE_FILE="docker-compose-extras.yml"
CONFIG_SOURCE_DIR="../conf"

# 颜色定义
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[34m'
RESET='\033[0m'

# 带颜色输出函数
error_echo() { echo -e "${RED}[ERROR] $* ${RESET}"; }
warn_echo() { echo -e "${YELLOW}[WARN] $* ${RESET}"; }
info_echo() { echo -e "${BLUE}[INFO] $* ${RESET}"; }
success_echo() { echo -e "${GREEN}[SUCCESS] $* ${RESET}"; }

# 操作菜单
show_menu() {
  clear
  echo "========================================"
  echo " Docker 项目管理脚本"
  echo "========================================"
  echo " 1. 加载配置文件"
  echo " 2. 启动主服务"
  echo " 3. 查看主服务状态"
  echo " 4. 停止并清理主服务"
  echo " 5. 启动附加服务"
  echo " 6. 查看附加服务状态"
  echo " 7. 停止并清理附加服务"
  echo " 8. 拉取最新镜像"
  echo " 0. 退出"
  echo "========================================"
}

# 加载配置文件
load_config() {
  info_echo "正在从 ${CONFIG_SOURCE_DIR} 加载配置文件..."
  
  if [ -d "${CONFIG_SOURCE_DIR}" ]; then
    cp -v "${CONFIG_SOURCE_DIR}"/* . 2>/dev/null
    if [ $? -eq 0 ]; then
      success_echo "配置文件加载完成"
    else
      error_echo "配置文件复制失败,请检查源目录权限"
      return 1
    fi
  else
    error_echo "配置目录 ${CONFIG_SOURCE_DIR} 不存在"
    return 1
  fi
}

# 执行 Docker 命令
run_docker_cmd() {
  local cmd_type=$1
  local compose_file=$2
  local sub_cmd=$3

  case $cmd_type in
    "main")
      info_echo "执行主服务操作: docker compose ${sub_cmd}"
      docker compose -f "${MAIN_COMPOSE_FILE}" $sub_cmd
      ;;
    "extra")
      info_echo "执行附加服务操作: docker compose ${sub_cmd}"
      docker compose -f "${EXTRA_COMPOSE_FILE}" $sub_cmd
      ;;
    "pull")
      info_echo "正在拉取所有服务的最新镜像..."
      docker compose -f "${MAIN_COMPOSE_FILE}" -f "${EXTRA_COMPOSE_FILE}" pull
      ;;
    *)
      error_echo "未知的命令类型"
      return 1
      ;;
  esac

  if [ $? -ne 0 ]; then
    error_echo "命令执行失败"
    return 1
  fi
}

# 主逻辑
while true; do
  show_menu
  read -p "请输入操作编号 (0-8): " choice

  case $choice in
    1) 
      load_config
      read -p "按回车键继续..."
      ;;
    2)
      run_docker_cmd "main" "${MAIN_COMPOSE_FILE}" "up -d"
      read -p "按回车键继续..."
      ;;
    3)
      run_docker_cmd "main" "${MAIN_COMPOSE_FILE}" "ps -a"
      read -p "按回车键继续..."
      ;;
    4)
      run_docker_cmd "main" "${MAIN_COMPOSE_FILE}" "down -v"
      read -p "按回车键继续..."
      ;;
    5)
      run_docker_cmd "extra" "${EXTRA_COMPOSE_FILE}" "up -d"
      read -p "按回车键继续..."
      ;;
    6)
      run_docker_cmd "extra" "${EXTRA_COMPOSE_FILE}" "ps -a"
      read -p "按回车键继续..."
      ;;
    7)
      run_docker_cmd "extra" "${EXTRA_COMPOSE_FILE}" "down -v"
      read -p "按回车键继续..."
      ;;
    8)
      run_docker_cmd "pull"
      read -p "按回车键继续..."
      ;;
    0)
      info_echo "感谢使用,再见!"
      exit 0
      ;;
    *)
      error_echo "无效的输入,请重新选择"
      sleep 1
      ;;
  esac
done

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注