浏览代码

Closes #20 Determine the deployed Compose client in the current system environment.

dqzboy 1 年之前
父节点
当前提交
8ba8c8ac33
共有 1 个文件被更改,包括 43 次插入32 次删除
  1. 43 32
      install/DockerProxy_Install.sh

+ 43 - 32
install/DockerProxy_Install.sh

@@ -167,6 +167,16 @@ function CHECK_PKG_MANAGER() {
     fi
 }
 
+function CHECK_COMPOSE_CMD() {
+if command -v docker &> /dev/null && docker compose version &> /dev/null; then
+    DOCKER_COMPOSE_CMD="docker compose"
+elif command -v docker-compose &> /dev/null; then
+    DOCKER_COMPOSE_CMD="docker-compose"
+else
+    WARN "未检查到Docker Compose客户端工具,请通过脚本安装部署!"
+fi
+}
+
 function CHECKMEM() {
 memory_usage=$(free | awk '/^Mem:/ {printf "%.2f", $3/$2 * 100}')
 memory_usage=${memory_usage%.*}
@@ -1533,14 +1543,14 @@ function START_CONTAINER() {
 
     # DOWN_CONFIG函数执行后判断selected_all变量
     if [ "$selected_all" = true ]; then
-        docker-compose up -d --force-recreate
+        $DOCKER_COMPOSE_CMD up -d --force-recreate
         # 检查命令执行是否成功
         if [ $? -ne 0 ]; then
           ERROR "Docker 容器${LIGHT_RED}启动失败${RESET},请通过查看日志确认启动失败原因"
           exit 1
         fi
     else
-        docker-compose up -d "${selected_names[@]}" registry-ui
+        $DOCKER_COMPOSE_CMD up -d "${selected_names[@]}" registry-ui
         # 检查命令执行是否成功
         if [ $? -ne 0 ]; then
           ERROR "Docker 容器${LIGHT_RED}启动失败${RESET},请通过查看日志确认启动失败原因"
@@ -1555,14 +1565,14 @@ function START_CONTAINER() {
 function RESTART_CONTAINER() {
     # DOWN_CONFIG函数执行后判断selected_all变量
     if [ "$selected_all" = true ]; then
-        docker-compose restart
+        $DOCKER_COMPOSE_CMD restart
         # 检查命令执行是否成功
         if [ $? -ne 0 ]; then
           ERROR "Docker 容器启动失败,请通过查看日志确认启动失败原因"
           exit 1
         fi
     else
-        docker-compose restart "${selected_names[@]}"
+        $DOCKER_COMPOSE_CMD restart "${selected_names[@]}"
         # 检查命令执行是否成功
         if [ $? -ne 0 ]; then
           ERROR "Docker 容器启动失败,请通过查看日志确认启动失败原因"
@@ -1587,7 +1597,7 @@ START_CONTAINER
 function STOP_REMOVE_CONTAINER() {
     if [[ -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" ]]; then
         INFO "停止和移除所有容器"
-        docker-compose -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" down --remove-orphans
+        $DOCKER_COMPOSE_CMD -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" down --remove-orphans
     else 
         WARN "${LIGHT_YELLOW}容器目前未处于运行状态,无需进行删除操作!${RESET}"
         exit 1
@@ -1704,6 +1714,7 @@ ALL_IN_ONE() {
 CHECK_OS
 CHECK_PACKAGE_MANAGER
 CHECK_PKG_MANAGER
+CHECK_COMPOSE_CMD
 CHECKMEM
 CHECKFIRE
 CHECKBBR
@@ -1771,7 +1782,7 @@ CMDUI_DIR="${PROXY_DIR}/hubcmdui"
 if [ -d "${CMDUI_DIR}" ]; then
     if [ -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" ]; then
         INFO "停止和移除HubCMD-UI容器"
-        docker-compose -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" down --remove-orphans
+        $DOCKER_COMPOSE_CMD -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" down --remove-orphans
         rm -rf "${CMDUI_DIR}"
     else
         WARN "${LIGHT_YELLOW}文件${CMDUI_DIR}/${DOCKER_COMPOSE_FILE} 不存在,无需进行删除操作!${RESET}"
@@ -1831,10 +1842,10 @@ INSTALL_HUBCMDUI() {
     INFO "正在安装HubCMD-UI服务,请稍等!安装路径 ${LIGHT_CYAN}${CMDUI_DIR}${RESET}"
 
     if [[ -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" ]]; then
-        if docker-compose ps --services 2>/dev/null | grep -q "^${CMDUI_NAME}$"; then
+        if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${CMDUI_NAME}$"; then
             INFO "${CMDUI_NAME} 已经安装并启动,无需重复执行安装!"              
         else
-            docker-compose -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d
+            $DOCKER_COMPOSE_CMD -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d
         fi
     else 
         wget -NP ${CMDUI_DIR}/ ${CMDUI_COMPOSE_FILE} &>/dev/null
@@ -1842,7 +1853,7 @@ INSTALL_HUBCMDUI() {
             WARN "下载${LIGHT_YELLOW}docker-compose.yaml 文件失败${RESET},请稍后重试!"
             HUBCMDUI
         fi
-        docker-compose -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d
+        $DOCKER_COMPOSE_CMD -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d
         if [ $? -eq 0 ]; then
             CMDUI_PROMPT
             exit 1
@@ -1858,12 +1869,12 @@ UPDATE_HUBCMDUI() {
     if [ -d "${CMDUI_DIR}" ]; then
         if [ -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" ]; then
             INFO "正在更新HubCMD-UI容器"
-            docker-compose -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" pull
+            $DOCKER_COMPOSE_CMD -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" pull
             if [ $? -ne 0 ]; then
                 WARN "HubCMD-UI ${LIGHT_YELLOW}镜像拉取失败${RESET},请稍后重试!"
                 HUBCMDUI
             fi
-            docker-compose -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d --force-recreate
+            $DOCKER_COMPOSE_CMD -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d --force-recreate
             if [ $? -ne 0 ]; then
                 WARN "HubCMD-UI ${LIGHT_YELLOW}服务启动失败${RESET},请稍后重试!"
                 HUBCMDUI
@@ -2073,7 +2084,7 @@ RESTART_SERVICE() {
 
     if [[ "$restart_service" == "9" ]]; then
         for service_name in "${services[@]}"; do
-            if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+            if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                 selected_services+=("$service_name")               
             else
                 WARN "服务 ${service_name}未运行,跳过重启。"
@@ -2087,7 +2098,7 @@ RESTART_SERVICE() {
         for choice in ${restart_service}; do
             if [[ $choice =~ ^[0-9]+$ ]] && ((choice >0 && choice <= ${#services[@]})); then
                 service_name="${services[$((choice -1))]}"
-                if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+                if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                     selected_services+=("$service_name")                  
                 else
                     WARN "服务 ${service_name} 未运行,跳过重启。"
@@ -2123,7 +2134,7 @@ UPDATE_SERVICE() {
 
     if [[ "$choices_service" == "9" ]]; then
         for service_name in "${services[@]}"; do
-            if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+            if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                 selected_services+=("$service_name")               
             else
                 WARN "服务 ${service_name}未运行,跳过更新。"
@@ -2137,7 +2148,7 @@ UPDATE_SERVICE() {
         for choice in ${choices_service}; do
             if [[ $choice =~ ^[0-9]+$ ]] && ((choice >0 && choice <= ${#services[@]})); then
                 service_name="${services[$((choice -1))]}"
-                if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+                if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                     selected_services+=("$service_name")
                 else
                     WARN "服务 ${service_name} 未运行,跳过更新。"
@@ -2176,7 +2187,7 @@ CONTAIENR_LOGS() {
         for choice in ${restart_service}; do
             if [[ $choice =~ ^[0-9]+$ ]] && ((choice >0 && choice <= ${#services[@]})); then
                 service_name="${services[$((choice -1))]}"
-                if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+                if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                     selected_services+=("$service_name")
                 else
                     WARN "服务 ${service_name} 未运行,无法查看容器日志。"
@@ -2243,7 +2254,7 @@ MODIFY_SERVICE_TTL_CONFIG() {
             non_existing_files+=("$file_name")
         fi
         
-        if ! docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+        if ! $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
             WARN "服务 ${service_name} 未运行。"
         fi
     done
@@ -2418,7 +2429,7 @@ if [ -d "${PROXY_DIR}" ]; then
         START_NEW_SERVER_DOWN_CONFIG
         PROXY_HTTP
         INFO "正在启动新的容器服务,请稍等..."
-        docker-compose -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" up -d "${selected_names[@]}"
+        $DOCKER_COMPOSE_CMD -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" up -d "${selected_names[@]}"
         if [ $? -ne 0 ]; then
             WARN "${selected_names[*]} ${LIGHT_YELLOW}服务启动失败${RESET},请排查!"         
         else
@@ -2451,8 +2462,8 @@ case $ser_choice in
             ERROR "没有需要重启的服务,请重新选择"
             RESTART_SERVICE
         else
-            docker-compose stop ${selected_services[*]}
-            docker-compose up -d --force-recreate ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD stop ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD up -d --force-recreate ${selected_services[*]}
         fi
         SVC_MGMT
         ;;
@@ -2462,8 +2473,8 @@ case $ser_choice in
             ERROR "没有需要更新的服务,请重新选择"
             UPDATE_SERVICE
         else
-            docker-compose pull ${selected_services[*]}
-            docker-compose up -d --force-recreate ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD pull ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD up -d --force-recreate ${selected_services[*]}
         fi
         SVC_MGMT
         ;;
@@ -2474,7 +2485,7 @@ case $ser_choice in
             CONTAIENR_LOGS
         else
             # 查看最近30条日志
-            docker-compose logs --tail=30 ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD logs --tail=30 ${selected_services[*]}
         fi
         SVC_MGMT
         ;;
@@ -2484,7 +2495,7 @@ case $ser_choice in
             ERROR "修改的服务未运行,请重新选择"
             MODIFY_SERVICE_TTL_CONFIG
         else
-            docker-compose restart ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD restart ${selected_services[*]}
         fi
         SVC_MGMT
         ;;
@@ -2638,7 +2649,7 @@ else
             file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2)
             service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1)
             
-            if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+            if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                 selected_services+=("$service_name")
             else
                 WARN "服务 ${LIGHT_MAGENTA}${service_name} 未运行${RESET},但将尝试删除相关文件。"
@@ -2660,7 +2671,7 @@ else
     # 一次性删除所有选中的服务
     if [ ${#selected_services[@]} -gt 0 ]; then
         INFO "删除的服务: ${LIGHT_RED}${selected_services[*]}${RESET}"
-        docker-compose down ${selected_services[*]}
+        $DOCKER_COMPOSE_CMD down ${selected_services[*]}
     fi
 fi
 }
@@ -2909,7 +2920,7 @@ else
             service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1)
             selected_files+=("$file_name")
 
-            if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+            if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                 selected_services+=("$service_name")
             else
                 WARN "服务 ${LIGHT_MAGENTA}${service_name} 未运行${RESET},无法添加认证授权"
@@ -2975,7 +2986,7 @@ else
             service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1)
             selected_files+=("$file_name")
 
-            if docker-compose ps --services 2>/dev/null | grep -q "^${service_name}$"; then
+            if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
                 selected_services+=("$service_name")
             else
                 WARN "服务 ${LIGHT_MAGENTA}${service_name} 未运行${RESET},无法添加认证授权"                
@@ -3015,8 +3026,8 @@ case $auth_choice in
             WARN "退出认证授权,请${LIGHT_CYAN}重新选择${RESET}服务认证的操作"
             AUTH_SERVICE_CONFIG # 没有服务运行调用函数
         else
-            docker-compose down ${selected_services[*]}
-            docker-compose up -d --force-recreate ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD down ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD up -d --force-recreate ${selected_services[*]}
         fi
         AUTH_SERVICE_CONFIG
         ;;
@@ -3026,8 +3037,8 @@ case $auth_choice in
             WARN "退出认证授权,请${LIGHT_CYAN}重新选择${RESET}服务认证的操作"
             AUTH_SERVICE_CONFIG # 没有服务运行调用函数
         else
-            docker-compose down ${selected_services[*]}
-            docker-compose up -d --force-recreate ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD down ${selected_services[*]}
+            $DOCKER_COMPOSE_CMD up -d --force-recreate ${selected_services[*]}
         fi
         AUTH_SERVICE_CONFIG
         ;;