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

This commit is contained in:
dqzboy
2024-08-17 19:31:06 +08:00
parent 1ab4d3a51e
commit 8ba8c8ac33

View File

@@ -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
;;