mirror of
https://github.com/dqzboy/Docker-Proxy.git
synced 2026-07-01 05:35:49 +08:00
feat: Support for installing individual components separately.
This commit is contained in:
+222
-40
@@ -74,6 +74,7 @@ function SEPARATOR() {
|
||||
echo -e "${INFO}${BOLD}${LIGHT_BLUE}======================== ${1} ========================${RESET}"
|
||||
}
|
||||
|
||||
|
||||
PROXY_DIR="/data/registry-proxy"
|
||||
mkdir -p ${PROXY_DIR}
|
||||
cd "${PROXY_DIR}"
|
||||
@@ -341,7 +342,7 @@ status=$(systemctl is-active caddy)
|
||||
if [ "$status" = "active" ]; then
|
||||
INFO "Caddy 服务运行正常,请继续..."
|
||||
else
|
||||
ERROR "Caddy 服务未运行,请检查后再次执行脚本!"
|
||||
ERROR "Caddy 服务未运行,会导致服务无法正常安装运行,请检查后再次执行脚本!"
|
||||
ERROR "-----------服务启动失败,请查看错误日志 ↓↓↓-----------"
|
||||
journalctl -u caddy.service --no-pager
|
||||
ERROR "-----------服务启动失败,请查看错误日志 ↑↑↑-----------"
|
||||
@@ -452,8 +453,9 @@ else
|
||||
WARN "无法确定包管理系统."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function CONFIG_CADDY() {
|
||||
SEPARATOR "配置Caddy"
|
||||
while true; do
|
||||
INFO "${LIGHT_GREEN}>>> 域名解析主机记录(即域名前缀):${RESET} ${LIGHT_CYAN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}"
|
||||
@@ -585,7 +587,7 @@ status=$(systemctl is-active nginx)
|
||||
if [ "$status" = "active" ]; then
|
||||
INFO "Nginx 服务运行正常,请继续..."
|
||||
else
|
||||
ERROR "Nginx 服务未运行,请检查后再次执行脚本!"
|
||||
ERROR "Nginx 服务未运行,会导致服务无法正常安装运行,请检查后再次执行脚本!"
|
||||
ERROR "-----------服务启动失败,请查看错误日志 ↓↓↓-----------"
|
||||
journalctl -u nginx.service --no-pager
|
||||
ERROR "-----------服务启动失败,请查看错误日志 ↑↑↑-----------"
|
||||
@@ -668,8 +670,9 @@ else
|
||||
WARN "无法确定包管理系统."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function CONFIG_NGINX() {
|
||||
SEPARATOR "配置Nginx"
|
||||
while true; do
|
||||
WARN "自行安装的 Nginx ${LIGHT_RED}请勿执行此操作${RESET},${LIGHT_BLUE}以防覆盖原有配置${RESET}"
|
||||
@@ -967,7 +970,7 @@ status=$(systemctl is-active docker)
|
||||
if [ "$status" = "active" ]; then
|
||||
INFO "Docker 服务运行正常,请继续..."
|
||||
else
|
||||
ERROR "Docker 服务未运行,请检查后再次执行脚本!"
|
||||
ERROR "Docker 服务未运行,会导致服务无法正常安装运行,请检查后再次执行脚本!"
|
||||
ERROR "-----------服务启动失败,请查看错误日志 ↓↓↓-----------"
|
||||
journalctl -u docker.service --no-pager
|
||||
ERROR "-----------服务启动失败,请查看错误日志 ↑↑↑-----------"
|
||||
@@ -1115,7 +1118,7 @@ if ! command -v docker-compose &> /dev/null || [ -z "$(docker-compose --version)
|
||||
fi
|
||||
else
|
||||
chmod +x $save_path/docker-compose
|
||||
INFO "Docker Compose 安装成功,版本为:$(docker-compose --version)"
|
||||
INFO "Docker Compose 已经安装,版本为:$(docker-compose --version)"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1309,7 +1312,7 @@ function DOWN_CONFIG() {
|
||||
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
|
||||
echo -e "${YELLOW}-------------------------------------------------${RESET}"
|
||||
|
||||
read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all下载所有${RESET}: ")" choices_reg
|
||||
read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all下载所有${RESET} > ")" choices_reg
|
||||
|
||||
if [[ "$choices_reg" == "9" ]]; then
|
||||
for file in "${files[@]}"; do
|
||||
@@ -1576,6 +1579,7 @@ done
|
||||
|
||||
function INSTALL_WEB() {
|
||||
while true; do
|
||||
SEPARATOR "安装WEB服务"
|
||||
read -e -p "$(INFO "是否安装WEB服务? (用来通过域名方式访问加速服务) ${PROMPT_YES_NO}")" choice_service
|
||||
if [[ "$choice_service" =~ ^[YyNn]$ ]]; then
|
||||
if [[ "$choice_service" == "Y" || "$choice_service" == "y" ]]; then
|
||||
@@ -1584,9 +1588,11 @@ while true; do
|
||||
if [[ "$web_service" =~ ^(nginx|Nginx|caddy|Caddy)$ ]]; then
|
||||
if [[ "$web_service" == "nginx" || "$web_service" == "Nginx" ]]; then
|
||||
INSTALL_NGINX
|
||||
CONFIG_NGINX
|
||||
break
|
||||
elif [[ "$web_service" == "caddy" || "$web_service" == "Caddy" ]]; then
|
||||
INSTALL_CADDY
|
||||
CONFIG_CADDY
|
||||
break
|
||||
fi
|
||||
else
|
||||
@@ -1605,8 +1611,7 @@ done
|
||||
}
|
||||
|
||||
|
||||
|
||||
function UPDATE_SERVICE() {
|
||||
function RESTART_SERVICE() {
|
||||
services=(
|
||||
"dockerhub"
|
||||
"gcr"
|
||||
@@ -1618,7 +1623,7 @@ function UPDATE_SERVICE() {
|
||||
|
||||
selected_services=()
|
||||
|
||||
WARN "更新服务请在docker compose文件存储目录下执行脚本.默认存储路径: ${PROXY_DIR}"
|
||||
WARN "重启服务请在${LIGHT_GREEN}docker-compose.yaml${RESET}文件存储目录下执行脚本.默认安装路径: ${LIGHT_BLUE}${PROXY_DIR}${RESET}"
|
||||
echo -e "${YELLOW}-------------------------------------------------${RESET}"
|
||||
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
|
||||
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
|
||||
@@ -1632,7 +1637,66 @@ function UPDATE_SERVICE() {
|
||||
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
|
||||
echo -e "${YELLOW}-------------------------------------------------${RESET}"
|
||||
|
||||
read -e -p "$(INFO '输入序号选择对应服务,空格分隔多个选项. all选择所有: ')" choices_service
|
||||
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all选择所有${RESET} > ")" restart_service
|
||||
|
||||
if [[ "$restart_service" == "9" ]]; then
|
||||
for service_name in "${services[@]}"; do
|
||||
if docker-compose ps --services | grep -q "^${service_name}$"; then
|
||||
selected_services+=("$service_name")
|
||||
else
|
||||
WARN "服务 ${service_name}未运行,跳过重启。"
|
||||
fi
|
||||
done
|
||||
INFO "重启的服务: ${selected_services[*]}"
|
||||
elif [[ "$restart_service" == "0" ]]; then
|
||||
WARN "退出重启服务!"
|
||||
exit 1
|
||||
else
|
||||
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 | grep -q "^${service_name}$"; then
|
||||
selected_services+=("$service_name")
|
||||
INFO "重启的服务: ${selected_services[*]}"
|
||||
else
|
||||
WARN "服务 ${service_name} 未运行,跳过重启。"
|
||||
|
||||
fi
|
||||
else
|
||||
ERROR "无效的选择: $choice. 请重新${LIGHT_GREEN}选择0-9${RESET}的选项"
|
||||
sleep 2; RESTART_SERVICE
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
function UPDATE_SERVICE() {
|
||||
services=(
|
||||
"dockerhub"
|
||||
"gcr"
|
||||
"ghcr"
|
||||
"quay"
|
||||
"k8sgcr"
|
||||
"k8s"
|
||||
)
|
||||
|
||||
selected_services=()
|
||||
|
||||
WARN "更新服务请在${LIGHT_GREEN}docker-compose.yaml${RESET}文件存储目录下执行脚本.默认安装路径: ${LIGHT_BLUE}${PROXY_DIR}${RESET}"
|
||||
echo -e "${YELLOW}-------------------------------------------------${RESET}"
|
||||
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
|
||||
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
|
||||
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
|
||||
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
|
||||
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
|
||||
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
|
||||
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
|
||||
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
|
||||
echo -e "${GREEN}9)${RESET} ${BOLD}all${RESET}"
|
||||
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
|
||||
echo -e "${YELLOW}-------------------------------------------------${RESET}"
|
||||
|
||||
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all选择所有${RESET} > ")" choices_service
|
||||
|
||||
if [[ "$choices_service" == "9" ]]; then
|
||||
for service_name in "${services[@]}"; do
|
||||
@@ -1658,8 +1722,8 @@ function UPDATE_SERVICE() {
|
||||
|
||||
fi
|
||||
else
|
||||
ERROR "无效的选择: $choice"
|
||||
exit 3
|
||||
ERROR "无效的选择: $choice. 请重新${LIGHT_GREEN}选择0-9${RESET}的选项"
|
||||
sleep 2; UPDATE_SERVICE
|
||||
fi
|
||||
done
|
||||
fi
|
||||
@@ -1690,69 +1754,182 @@ INFO "================================================================"
|
||||
}
|
||||
|
||||
|
||||
function main() {
|
||||
SEPARATOR "请选择操作"
|
||||
echo -e "1) ${BOLD}${LIGHT_GREEN}新装${RESET}服务"
|
||||
echo -e "2) ${BOLD}${LIGHT_MAGENTA}重启${RESET}服务"
|
||||
echo -e "3) ${BOLD}${GREEN}更新${RESET}服务"
|
||||
echo -e "4) ${BOLD}${LIGHT_CYAN}更新${RESET}配置"
|
||||
echo -e "5) ${BOLD}${LIGHT_YELLOW}卸载${RESET}服务"
|
||||
echo -e "6) 本机${BOLD}${CYAN}Docker代理${RESET}"
|
||||
function ALL_IN_ONE() {
|
||||
CHECK_OS
|
||||
CHECK_PACKAGE_MANAGER
|
||||
CHECK_PKG_MANAGER
|
||||
CHECKMEM
|
||||
CHECKFIRE
|
||||
CHECKBBR
|
||||
PACKAGE
|
||||
INSTALL_WEB
|
||||
while true; do
|
||||
SEPARATOR "安装Docker"
|
||||
read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}] > ")" deploy_docker
|
||||
case "$deploy_docker" in
|
||||
1 )
|
||||
INSTALL_DOCKER
|
||||
INSTALL_COMPOSE
|
||||
break;;
|
||||
2 )
|
||||
INSTALL_DOCKER_CN
|
||||
INSTALL_COMPOSE_CN
|
||||
break;;
|
||||
* )
|
||||
INFO "请输入 ${LIGHT_GREEN}1${RESET} 表示国外 或者 ${LIGHT_YELLOW}2${RESET} 表示大陆";;
|
||||
esac
|
||||
done
|
||||
|
||||
INSTALL_DOCKER_PROXY
|
||||
PROMPT
|
||||
}
|
||||
|
||||
|
||||
function COMP_INST() {
|
||||
SEPARATOR "安装组件"
|
||||
echo -e "1) ${BOLD}安装${LIGHT_GREEN}环境依赖${RESET}"
|
||||
echo -e "2) ${BOLD}安装${LIGHT_GREEN}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 "6) ${BOLD}配置${LIGHT_YELLOW}Nginx${RESET}"
|
||||
echo -e "7) ${BOLD}配置${CYAN}Caddy${RESET}"
|
||||
echo -e "8) ${BOLD}返回${LIGHT_RED}主菜单${RESET}"
|
||||
echo -e "0) ${BOLD}退出脚本${RESET}"
|
||||
echo "---------------------------------------------------------------"
|
||||
read -e -p "$(INFO "输入${LIGHT_CYAN}对应数字${RESET}并按${LIGHT_GREEN}Enter${RESET}键: ")" user_choice
|
||||
case $user_choice in
|
||||
read -e -p "$(INFO "输入${LIGHT_CYAN}对应数字${RESET}并按${LIGHT_GREEN}Enter${RESET}键 > ")" comp_choice
|
||||
|
||||
case $comp_choice in
|
||||
1)
|
||||
CHECK_OS
|
||||
CHECK_PACKAGE_MANAGER
|
||||
CHECK_PKG_MANAGER
|
||||
CHECKMEM
|
||||
CHECKFIRE
|
||||
CHECKBBR
|
||||
PACKAGE
|
||||
INSTALL_WEB
|
||||
|
||||
COMP_INST
|
||||
;;
|
||||
2)
|
||||
while true; do
|
||||
SEPARATOR "安装Docker"
|
||||
read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}]: ")" deploy_docker
|
||||
read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}] > ")" deploy_docker
|
||||
case "$deploy_docker" in
|
||||
1 )
|
||||
INSTALL_DOCKER
|
||||
INSTALL_COMPOSE
|
||||
break;;
|
||||
2 )
|
||||
INSTALL_DOCKER_CN
|
||||
break;;
|
||||
* )
|
||||
INFO "请输入 ${LIGHT_GREEN}1${RESET} 表示国外 或者 ${LIGHT_YELLOW}2${RESET} 表示大陆";;
|
||||
esac
|
||||
done
|
||||
COMP_INST
|
||||
;;
|
||||
3)
|
||||
while true; do
|
||||
read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}] > ")" deploy_compose
|
||||
case "$deploy_compose" in
|
||||
1 )
|
||||
INSTALL_COMPOSE
|
||||
break;;
|
||||
2 )
|
||||
INSTALL_COMPOSE_CN
|
||||
break;;
|
||||
* )
|
||||
INFO "请输入 ${LIGHT_GREEN}1${RESET} 表示国外 或者 ${LIGHT_YELLOW}2${RESET} 表示大陆";;
|
||||
esac
|
||||
done
|
||||
COMP_INST
|
||||
;;
|
||||
4)
|
||||
INSTALL_NGINX
|
||||
COMP_INST
|
||||
;;
|
||||
5)
|
||||
INSTALL_Caddy
|
||||
COMP_INST
|
||||
;;
|
||||
6)
|
||||
CONFIG_NGINX
|
||||
COMP_INST
|
||||
;;
|
||||
7)
|
||||
CONFIG_CADDY
|
||||
COMP_INST
|
||||
;;
|
||||
8)
|
||||
main_menu
|
||||
;;
|
||||
0)
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
WARN "输入了无效的选择。请重新运行脚本并${LIGHT_GREEN}选择1-7${RESET}的选项."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
INSTALL_DOCKER_PROXY
|
||||
PROMPT
|
||||
function main_menu() {
|
||||
echo -e "╔════════════════════════════════════════════════════╗"
|
||||
echo -e "║ ║"
|
||||
echo -e "║ ${LIGHT_CYAN}欢迎使用Docker-Proxy${RESET} ║"
|
||||
echo -e "║ ║"
|
||||
echo -e "║ TG频道: ${UNDERLINE}https://t.me/dqzboyblog${RESET} ║"
|
||||
echo -e "║ ║"
|
||||
echo -e "║ ${LIGHT_BLUE}by dqzboy${RESET} ║"
|
||||
echo -e "║ ║"
|
||||
echo -e "╚════════════════════════════════════════════════════╝"
|
||||
echo
|
||||
SEPARATOR "请选择操作"
|
||||
echo -e "1) ${BOLD}${LIGHT_GREEN}一键${RESET}部署"
|
||||
echo -e "2) ${BOLD}${LIGHT_MAGENTA}组件${RESET}安装"
|
||||
echo -e "3) ${BOLD}${YELLOW}重启${RESET}服务"
|
||||
echo -e "4) ${BOLD}${GREEN}更新${RESET}服务"
|
||||
echo -e "5) ${BOLD}${LIGHT_CYAN}更新${RESET}配置"
|
||||
echo -e "6) ${BOLD}${LIGHT_YELLOW}卸载${RESET}服务"
|
||||
echo -e "7) 本机${BOLD}${CYAN}Docker代理${RESET}"
|
||||
echo -e "0) ${BOLD}退出脚本${RESET}"
|
||||
echo "---------------------------------------------------------------"
|
||||
read -e -p "$(INFO "输入${LIGHT_CYAN}对应数字${RESET}并按${LIGHT_GREEN}Enter${RESET}键 > ")" main_choice
|
||||
|
||||
|
||||
case $main_choice in
|
||||
1)
|
||||
ALL_IN_ONE
|
||||
;;
|
||||
2)
|
||||
SEPARATOR "重启服务"
|
||||
docker-compose restart
|
||||
SEPARATOR "重启完成"
|
||||
COMP_INST
|
||||
;;
|
||||
3)
|
||||
SEPARATOR "重启服务"
|
||||
RESTART_SERVICE
|
||||
if [ ${#selected_services[@]} -eq 0 ]; then
|
||||
ERROR "没有需要重启的服务,请重新选择"
|
||||
sleep 2; RESTART_SERVICE
|
||||
else
|
||||
docker-compose stop ${selected_services[*]}
|
||||
docker-compose up -d --force-recreate ${selected_services[*]}
|
||||
fi
|
||||
SEPARATOR "重启完成"
|
||||
;;
|
||||
4)
|
||||
SEPARATOR "更新服务"
|
||||
UPDATE_SERVICE
|
||||
if [ ${#selected_services[@]} -eq 0 ]; then
|
||||
WARN "没有需要更新的服务。"
|
||||
ERROR "没有需要更新的服务,请重新选择"
|
||||
sleep 2; UPDATE_SERVICE
|
||||
else
|
||||
docker-compose pull ${selected_services[*]}
|
||||
docker-compose up -d --force-recreate ${selected_services[*]}
|
||||
fi
|
||||
SEPARATOR "更新完成"
|
||||
;;
|
||||
4)
|
||||
5)
|
||||
SEPARATOR "更新配置"
|
||||
UPDATE_CONFIG
|
||||
SEPARATOR "更新完成"
|
||||
;;
|
||||
5)
|
||||
6)
|
||||
SEPARATOR "卸载服务"
|
||||
WARN "${LIGHT_RED}注意:${RESET} ${LIGHT_MAGENTA}卸载服务会一同将项目本地的镜像缓存删除,请执行卸载之前确定是否需要备份本地的镜像缓存文件${RESET}"
|
||||
while true; do
|
||||
@@ -1775,15 +1952,20 @@ case $user_choice in
|
||||
esac
|
||||
done
|
||||
;;
|
||||
6)
|
||||
7)
|
||||
SEPARATOR "配置本机Docker代理"
|
||||
DOCKER_PROXY_HTTP
|
||||
ADD_PROXY
|
||||
SEPARATOR "Docker代理配置完成"
|
||||
;;
|
||||
0)
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
WARN "输入了无效的选择。请重新运行脚本并${LIGHT_GREEN}选择1-6${RESET}的选项."
|
||||
WARN "输入了无效的选择。请重新${LIGHT_GREEN}选择0-7${RESET}的选项."
|
||||
sleep 2; main_menu
|
||||
;;
|
||||
esac
|
||||
}
|
||||
main
|
||||
|
||||
main_menu
|
||||
Reference in New Issue
Block a user