feat: Add installation and uninstallation options for the hubcmdui service

This commit is contained in:
dqzboy
2024-07-24 20:29:50 +08:00
parent 103b6c36d5
commit 6d955e90d7

View File

@@ -85,10 +85,13 @@ cd "${PROXY_DIR}"
GITRAW="https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main"
CNGITRAW="https://gitee.com/boydqz/Docker-Proxy/raw/main"
# docker registry
IMAGE_NAME="dqzboy/registry"
UI_IMAGE_NAME="dqzboy/docker-registry-ui"
DOCKER_COMPOSE_FILE="docker-compose.yaml"
# HubCMD-UI
CMDUI_IMAGE_NAME="dqzboy/hubcmd-ui"
CMDUI_COMPOSE_FILE="${GITRAW}/hubcmdui/${DOCKER_COMPOSE_FILE}"
attempts=0
maxAttempts=3
@@ -1669,8 +1672,6 @@ while true; do
done
}
function PROMPT(){
PUBLIC_IP=$(curl -s https://ifconfig.me)
ALL_IPS=$(hostname -I)
@@ -1694,7 +1695,6 @@ INFO
INFO "================================================================"
}
function INSTALL_PROXY() {
ALL_IN_ONE() {
CHECK_OS
@@ -1760,17 +1760,150 @@ case $proxy_install in
esac
}
function REMOVE_CMDUI() {
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
rm -rf "${CMDUI_DIR}"
else
WARN "${LIGHT_YELLOW}文件${CMDUI_DIR}/${DOCKER_COMPOSE_FILE} 不存在,无需进行删除操作!${RESET}"
fi
else
WARN "${LIGHT_YELLOW}目录 ${CMDUI_DIR} 不存在,无需进行删除操作!${RESET}"
fi
docker images | grep "^${CMDUI_IMAGE_NAME}.*<none>" | awk '{print $3}' | xargs -r docker rmi
images=$(docker images ${CMDUI_IMAGE_NAME} --format '{{.Repository}}:{{.Tag}}')
latest=$(echo "$images" | sort -V | tail -n1)
for image in $images; do
if [ "$image" != "$latest" ]; then
docker rmi $image
fi
done
# 强制移除所有相关镜像
docker rmi --force $(docker images -q ${CMDUI_IMAGE_NAME}) &>/dev/null
}
function HUBCMDUI() {
CMDUI_NAME="hubcmd-ui"
CMDUI_DIR="${PROXY_DIR}/hubcmdui"
CMDUI_PROMPT() {
PUBLIC_IP=$(curl -s https://ifconfig.me)
ALL_IPS=$(hostname -I)
INTERNAL_IP=$(echo "$ALL_IPS" | awk '$1!="127.0.0.1" && $1!="::1" && $1!="docker0" {print $1}')
echo
INFO "=================感谢您的耐心等待,安装已经完成=================="
INFO
INFO "请用浏览器访问 HubCMD-UI 面板: "
INFO "公网访问地址: ${UNDERLINE}http://$PUBLIC_IP:30080${RESET}"
INFO "内网访问地址: ${UNDERLINE}http://$INTERNAL_IP:30080${RESET}"
INFO
INFO "后端访问地址: 地址后面跟admin例: ${UNDERLINE}http://$INTERNAL_IP/admin:30080${RESET}"
INFO "默认账号密码: ${LIGHT_GREEN}root${RESET}/${LIGHT_CYAN}admin${RESET}"
INFO
INFO "服务安装路径: ${LIGHT_BLUE}${CMDUI_DIR}${RESET}"
INFO
INFO "作者博客: https://dqzboy.com"
INFO "技术交流: https://t.me/dqzboyblog"
INFO "代码仓库: https://github.com/dqzboy/Docker-Proxy"
INFO
INFO "================================================================"
}
INSTALL_HUBCMDUI() {
mkdir -p ${CMDUI_DIR}
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
INFO "${CMDUI_NAME} 已经安装并启动,无需重复执行安装!"
else
docker-compose -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d
fi
else
wget -NP ${CMDUI_DIR}/ ${CMDUI_COMPOSE_FILE} &>/dev/null
if [ $? -ne 0 ]; then
WARN "下载${LIGHT_YELLOW}docker-compose.yaml 文件失败${RESET},请稍后重试!"
HUBCMDUI
fi
docker-compose -f "${CMDUI_DIR}/${DOCKER_COMPOSE_FILE}" up -d
if [ $? -eq 0 ]; then
CMDUI_PROMPT
exit 1
else
WARN "服务安装失败,请稍后重试!"
HUBCMDUI
fi
fi
}
UNINSTALL_HUBCMDUI() {
WARN "${LIGHT_RED}注意:${RESET} ${LIGHT_YELLOW}请执行删除之前确定是否需要备份配置文件${RESET}"
while true; do
read -e -p "$(INFO "本人${LIGHT_RED}已知晓后果,确认删除${RESET}服务? ${PROMPT_YES_NO}")" delcmdui
case "$delcmdui" in
y|Y )
REMOVE_CMDUI
break;;
n|N )
WARN "退出执行卸载服务"
break;;
* )
INFO "请输入 ${LIGHT_GREEN}y${RESET}${LIGHT_YELLOW}n${RESET}";;
esac
done
}
SEPARATOR "HubCMD-UI管理"
echo -e "1) ${BOLD}${LIGHT_GREEN}安装${RESET}HubCMD-UI"
echo -e "2) ${BOLD}${LIGHT_YELLOW}卸载${RESET}HubCMD-UI"
echo -e "3) ${BOLD}返回${LIGHT_RED}主菜单${RESET}"
echo -e "0) ${BOLD}退出脚本${RESET}"
echo "---------------------------------------------------------------"
read -e -p "$(INFO "输入${LIGHT_CYAN}对应数字${RESET}并按${LIGHT_GREEN}Enter${RESET}键 > ")" cmdui_choice
case $cmdui_choice in
1)
INSTALL_HUBCMDUI
HUBCMDUI
;;
2)
UNINSTALL_HUBCMDUI
HUBCMDUI
;;
3)
main_menu
;;
0)
exit 1
;;
*)
WARN "输入了无效的选择。请重新${LIGHT_GREEN}选择0-8${RESET}的选项."
HUBCMDUI
;;
esac
}
function COMP_INST() {
SEPARATOR "安装组件"
echo -e "1) ${BOLD}安装${LIGHT_GREEN}环境依赖${RESET}"
echo -e "2) ${BOLD}安装${LIGHT_GREEN}Docker${RESET}"
echo -e "2) ${BOLD}安装${LIGHT_CYAN}Docker${RESET}"
echo -e "3) ${BOLD}安装${LIGHT_MAGENTA}Compose${RESET}"
echo -e "4) ${BOLD}安装${GREEN}Nginx${RESET}"
echo -e "5) ${BOLD}安装${LIGHT_CYAN}Caddy${RESET}"
echo -e "5) ${BOLD}安装${LIGHT_BLUE}Caddy${RESET}"
echo -e "6) ${BOLD}配置${LIGHT_YELLOW}Nginx${RESET}"
echo -e "7) ${BOLD}配置${CYAN}Caddy${RESET}"
echo -e "8) ${BOLD}返回${LIGHT_RED}主菜单${RESET}"
echo -e "8) ${BOLD}安装${BLUE}HubCMD-UI${RESET}"
echo -e "9) ${BOLD}返回${LIGHT_RED}主菜单${RESET}"
echo -e "0) ${BOLD}退出脚本${RESET}"
echo "---------------------------------------------------------------"
read -e -p "$(INFO "输入${LIGHT_CYAN}对应数字${RESET}并按${LIGHT_GREEN}Enter${RESET}键 > ")" comp_choice
@@ -1846,6 +1979,10 @@ case $comp_choice in
COMP_INST
;;
8)
HUBCMDUI
COMP_INST
;;
9)
main_menu
;;
0)
@@ -2332,6 +2469,7 @@ fi
RM_ALLSERVICE() {
STOP_REMOVE_CONTAINER
REMOVE_NONE_TAG
REMOVE_CMDUI
docker rmi --force $(docker images -q ${IMAGE_NAME}) &>/dev/null
docker rmi --force $(docker images -q ${UI_IMAGE_NAME}) &>/dev/null
if [ -d "${PROXY_DIR}" ]; then