xray_docker/install.sh
2026-01-14 00:25:22 +08:00

126 lines
3.3 KiB
Bash

#!/bin/bash
restart_docker() {
# 如果容器未运行,提示启动
local running_count=$(docker-compose -f ./docker-compose.yml ps -q | wc -l)
if [ "$running_count" -eq 0 ]; then
read -p "容器未启动,是否启动容器?(y/n): " choice
case "$choice" in
Y|y)
docker-compose -f ./docker-compose.yml up -d
return
;;
*)
echo "已取消启动"
return
;;
esac
fi
echo "正在重启容器..."
docker-compose -f ./docker-compose.yml down
docker-compose -f ./docker-compose.yml up -d
}
# 安装依赖
install_dependencies(){
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" # 脚本文件夹路径
source "${script_dir}/utils/base.sh"
if ! command -v curl >/dev/null 2>&1; then
install_package curl
fi
if ! command -v wget >/dev/null 2>&1; then
install_package wget
fi
if ! command -v jq >/dev/null 2>&1; then
echo 安装jq...
install_package jq
fi
if ! command -v docker >/dev/null 2>&1; then
echo 安装docker...
curl -fsSL https://get.docker.com | bash -s docker
fi
if ! command -v docker-compose >/dev/null 2>&1; then
echo 安装docker-compose...
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-linux-x86_64
chmod +x /usr/local/bin/docker-compose
fi
}
main(){
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" # 脚本文件夹路径
source "${script_dir}/utils/base.sh"
# 显示菜单
echo "请选择一个操作:"
echo "1. 一键部署"
echo "2. 创建配置 / 重置配置"
echo "3. 查看分享链接"
echo "4. 启动容器"
echo "5. 停止容器"
echo "6. 更新镜像"
echo "7. 修改端口"
echo "8. 修改Reality目标域名"
# 读取用户选择
read -p "输入您的选择: " choice
# 根据用户选择执行相应的操作
case $choice in
1)
# 一键部署
install_dependencies
bash $script_dir/create_config.sh
bash $script_dir/run.sh
bash $script_dir/print_share_link.sh
;;
2)
# 创建配置 / 重置配置
bash $script_dir/create_config.sh
;;
3)
# 查看分享链接
check_config
bash $script_dir/print_share_link.sh
;;
4)
# 启动容器
check_config
bash $script_dir/run.sh
bash $script_dir/print_share_link.sh
;;
5)
# 停止容器
docker-compose -f ./docker-compose.yml down
;;
6)
# 更新镜像
bash $script_dir/update_docker_images.sh
;;
7)
# 修改端口
check_config
bash $script_dir/update_port.sh
restart_docker
;;
8)
# 修改Reality目标域名
check_config
bash $script_dir/update_reality_dest.sh
restart_docker
;;
*)
echo "无效的选择, 请重新选择."
;;
esac
}
main