重构代码, 将变量改为大写
This commit is contained in:
+30
-30
@@ -2,11 +2,11 @@
|
||||
|
||||
|
||||
create_acme_tls_config() {
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local config_dir="$script_dir/../config"
|
||||
local config_file="$config_dir/config.json"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local CONFIG_DIR="$SCRIPT_DIR/../config"
|
||||
local CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||
|
||||
cp "$config_dir/template/tuic/tuic_acme_tls_config.json" "$config_file"
|
||||
cp "$CONFIG_DIR/template/tuic/tuic_acme_tls_config.json" "$CONFIG_FILE"
|
||||
|
||||
# 设置端口
|
||||
update_port
|
||||
@@ -18,39 +18,39 @@ create_acme_tls_config() {
|
||||
update_uuid
|
||||
|
||||
# 获取邮箱
|
||||
local user_email
|
||||
read -p "请输入你的邮箱(可留空): " user_email
|
||||
if [[ -z "$user_email" ]]; then
|
||||
user_email="example@example.com"
|
||||
local USER_EMAIL
|
||||
read -p "请输入你的邮箱(可留空): " USER_EMAIL
|
||||
if [[ -z "$USER_EMAIL" ]]; then
|
||||
USER_EMAIL="example@example.com"
|
||||
fi
|
||||
|
||||
# 获取域名
|
||||
local user_domain
|
||||
read -p "请输入你的域名 (例如: example.com): " user_domain
|
||||
while [[ -z "$user_domain" ]]; do
|
||||
local USER_DOMAIN
|
||||
read -p "请输入你的域名 (例如: example.com): " USER_DOMAIN
|
||||
while [[ -z "$USER_DOMAIN" ]]; do
|
||||
echo "[错误] 域名不能为空"
|
||||
read -p "请输入你的域名: " user_domain
|
||||
read -p "请输入你的域名: " USER_DOMAIN
|
||||
done
|
||||
|
||||
# 获取 Cloudflare API Token
|
||||
local cloudflare_token
|
||||
read -p "请输入你的 Cloudflare API Token: " cloudflare_token
|
||||
while [[ -z "$cloudflare_token" ]]; do
|
||||
local CLOUDFLARE_TOKEN
|
||||
read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN
|
||||
while [[ -z "$CLOUDFLARE_TOKEN" ]]; do
|
||||
echo "[错误] Cloudflare API Token 不能为空"
|
||||
read -p "请输入你的 Cloudflare API Token: " cloudflare_token
|
||||
read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN
|
||||
done
|
||||
|
||||
sed -i "s/你的邮箱/$user_email/g" "$config_file"
|
||||
sed -i "s/你的域名/$user_domain/g" "$config_file"
|
||||
sed -i "s/你的Cloudflare_API_Token/$cloudflare_token/g" "$config_file"
|
||||
sed -i "s/你的邮箱/$USER_EMAIL/g" "$CONFIG_FILE"
|
||||
sed -i "s/你的域名/$USER_DOMAIN/g" "$CONFIG_FILE"
|
||||
sed -i "s/你的Cloudflare_API_Token/$CLOUDFLARE_TOKEN/g" "$CONFIG_FILE"
|
||||
|
||||
green "成功创建配置"
|
||||
}
|
||||
|
||||
create_self_tls_config() {
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
|
||||
cp "$script_dir/../config/template/tuic/tuic_self_tls_config.json" "$script_dir/../config/config.json"
|
||||
cp "$SCRIPT_DIR/../config/template/tuic/tuic_self_tls_config.json" "$SCRIPT_DIR/../config/config.json"
|
||||
|
||||
# 设置端口
|
||||
update_port
|
||||
@@ -68,14 +68,14 @@ create_self_tls_config() {
|
||||
}
|
||||
|
||||
create_config(){
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local config_file="$script_dir/../config/config.json"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||
|
||||
# 如果配置文件已存在,提示用户是否重新生成
|
||||
if [ -e "$config_file" ]; then
|
||||
local regenerate
|
||||
read -p "检测到配置已存在,是否重新生成配置?(y/n): " regenerate
|
||||
if [ "$regenerate" != "y" ] && [ "$regenerate" != "Y" ]; then
|
||||
if [ -e "$CONFIG_FILE" ]; then
|
||||
local REGENERATE
|
||||
read -p "检测到配置已存在,是否重新生成配置?(y/n): " REGENERATE
|
||||
if [ "$REGENERATE" != "y" ] && [ "$REGENERATE" != "Y" ]; then
|
||||
echo "取消重新生成配置."
|
||||
return
|
||||
fi
|
||||
@@ -84,9 +84,9 @@ create_config(){
|
||||
echo "请选择配置类型:"
|
||||
echo "1. 自签名证书配置"
|
||||
echo "2. tls证书配置"
|
||||
local choice
|
||||
read -p "输入您的选择: " choice
|
||||
case $choice in
|
||||
local CHOICE
|
||||
read -p "输入您的选择: " CHOICE
|
||||
case $CHOICE in
|
||||
1)
|
||||
echo "重置为自签名证书配置..."
|
||||
create_self_tls_config
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
|
||||
# 生成自签名证书
|
||||
create_self_tls() {
|
||||
local domain="${1:-bing.com}"
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local key_dir="$script_dir/../tls/self-tls"
|
||||
local config_file="$script_dir/../config/config.json"
|
||||
local DOMAIN="${1:-bing.com}"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local KEY_DIR="$SCRIPT_DIR/../tls/self-tls"
|
||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||
|
||||
# 创建存放证书的目录
|
||||
mkdir -p "$key_dir"
|
||||
mkdir -p "$KEY_DIR"
|
||||
|
||||
# 生成自签名证书
|
||||
openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) \
|
||||
-keyout "$key_dir/server.key" \
|
||||
-out "$key_dir/server.crt" \
|
||||
-subj "/CN=$domain" \
|
||||
-keyout "$KEY_DIR/server.key" \
|
||||
-out "$KEY_DIR/server.crt" \
|
||||
-subj "/CN=$DOMAIN" \
|
||||
-days 36500
|
||||
|
||||
# 更新config.json文件中的域名信息
|
||||
modify_json_file "$config_file" "inbounds[0].tls.server_name" "$domain"
|
||||
modify_json_file "$CONFIG_FILE" "inbounds[0].tls.server_name" "$DOMAIN"
|
||||
}
|
||||
|
||||
|
||||
+10
-10
@@ -2,32 +2,32 @@
|
||||
|
||||
# 修改域名
|
||||
update_domain(){
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local config_file="$script_dir/../config/config.json"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||
|
||||
# 检查jq是否安装
|
||||
check_jq
|
||||
|
||||
# 获取旧的domain
|
||||
local old_domain=$(jq -r ".inbounds[0].tls.server_name" "$config_file")
|
||||
local OLD_DOMAIN=$(jq -r ".inbounds[0].tls.server_name" "$CONFIG_FILE")
|
||||
|
||||
# 输入新的domain
|
||||
local domain
|
||||
read -p "请输入域名[当前域名: $old_domain]: " domain
|
||||
local DOMAIN
|
||||
read -p "请输入域名[当前域名: $OLD_DOMAIN]: " DOMAIN
|
||||
|
||||
# 如果输入为空,退出脚本
|
||||
if [[ -z "$domain" ]]; then
|
||||
if [[ -z "$DOMAIN" ]]; then
|
||||
echo "输入域名为空,退出脚本"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 修改server_name
|
||||
modify_json_file "$config_file" ".inbounds[0].tls.server_name" "$domain"
|
||||
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.server_name" "$DOMAIN"
|
||||
|
||||
# 是否存在acme域名, 存在则修改
|
||||
local acme_exists=$(jq -r 'has("inbounds") and (.inbounds[0] | has("tls")) and (.inbounds[0].tls | has("acme"))' "$config_file")
|
||||
if [[ "$acme_exists" == "true" ]]; then
|
||||
modify_json_file "$config_file" ".inbounds[0].tls.acme.domain[0]" "$domain"
|
||||
local ACME_EXISTS=$(jq -r 'has("inbounds") and (.inbounds[0] | has("tls")) and (.inbounds[0].tls | has("acme"))' "$CONFIG_FILE")
|
||||
if [[ "$ACME_EXISTS" == "true" ]]; then
|
||||
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.acme.domain[0]" "$DOMAIN"
|
||||
fi
|
||||
|
||||
echo "修改域名成功"
|
||||
|
||||
+4
-4
@@ -2,15 +2,15 @@
|
||||
|
||||
# 更新密码的函数
|
||||
update_password() {
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local config_file="$script_dir/../config/config.json"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||
|
||||
|
||||
# 生成一个长度为16的随机密码
|
||||
local new_password=$(gen_password 16)
|
||||
local NEW_PASSWORD=$(gen_password 16)
|
||||
|
||||
# 修改密码
|
||||
sed -i 's/你的密码/'"$new_password"'/g' $config_file
|
||||
sed -i 's/你的密码/'"$NEW_PASSWORD"'/g' $CONFIG_FILE
|
||||
|
||||
echo "设置密码成功"
|
||||
}
|
||||
|
||||
+35
-35
@@ -8,27 +8,27 @@
|
||||
# $2: 结束端口(默认 65535)
|
||||
# $3: 最大随机尝试次数(默认 100)
|
||||
find_free_port() {
|
||||
local start="${1:-10001}"
|
||||
local max="${2:-65535}"
|
||||
local attempts="${3:-100}"
|
||||
local START="${1:-10001}"
|
||||
local MAX="${2:-65535}"
|
||||
local ATTEMPTS="${3:-100}"
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# 收集当前正在监听的端口(TCP + UDP)
|
||||
# 优先使用 ss,其次 netstat
|
||||
# ------------------------------------------------------------
|
||||
local used_ports raw
|
||||
local USED_PORTS RAW
|
||||
if command -v ss >/dev/null 2>&1; then
|
||||
# ss 输出示例:
|
||||
# LISTEN 0 128 0.0.0.0:22
|
||||
raw=$(ss -lntu 2>/dev/null || true)
|
||||
used_ports=$(printf "%s\n" "$raw" \
|
||||
RAW=$(ss -lntu 2>/dev/null || true)
|
||||
USED_PORTS=$(printf "%s\n" "$RAW" \
|
||||
| awk '{print $5}' \
|
||||
| sed -E 's/.*[:]//g')
|
||||
elif command -v netstat >/dev/null 2>&1; then
|
||||
# netstat 输出示例:
|
||||
# tcp 0 0 0.0.0.0:22
|
||||
raw=$(netstat -lntu 2>/dev/null || true)
|
||||
used_ports=$(printf "%s\n" "$raw" \
|
||||
RAW=$(netstat -lntu 2>/dev/null || true)
|
||||
USED_PORTS=$(printf "%s\n" "$RAW" \
|
||||
| awk '{print $4}' \
|
||||
| sed -E 's/.*[:]//g')
|
||||
else
|
||||
@@ -40,12 +40,12 @@ find_free_port() {
|
||||
# 将已占用端口存入关联数组,便于 O(1) 判断
|
||||
# 需要 bash 4+
|
||||
# ------------------------------------------------------------
|
||||
declare -A used_map
|
||||
local p
|
||||
for p in $used_ports; do
|
||||
declare -A USED_MAP
|
||||
local P
|
||||
for P in $USED_PORTS; do
|
||||
# 过滤非数字字段(如 *、:::)
|
||||
if [[ $p =~ ^[0-9]+$ ]]; then
|
||||
used_map["$p"]=1
|
||||
if [[ $P =~ ^[0-9]+$ ]]; then
|
||||
USED_MAP["$P"]=1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -53,14 +53,14 @@ find_free_port() {
|
||||
# 随机尝试若干次
|
||||
# 每次随机生成一个端口,只要未被监听就立即返回
|
||||
# ------------------------------------------------------------
|
||||
local port i
|
||||
for ((i=0; i<attempts; i++)); do
|
||||
local PORT I
|
||||
for ((I=0; I<ATTEMPTS; I++)); do
|
||||
# 在 [start, max] 范围内生成随机端口
|
||||
port=$(( RANDOM % (max - start + 1) + start ))
|
||||
PORT=$(( RANDOM % (MAX - START + 1) + START ))
|
||||
|
||||
# 如果端口不在已监听表中,则认为可用
|
||||
if [[ -z "${used_map[$port]}" ]]; then
|
||||
echo "$port"
|
||||
if [[ -z "${USED_MAP[$PORT]}" ]]; then
|
||||
echo "$PORT"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
@@ -69,7 +69,7 @@ find_free_port() {
|
||||
# 多次随机尝试后仍未找到可用端口
|
||||
# 通常意味着端口范围过小或已被大量占用
|
||||
# ------------------------------------------------------------
|
||||
echo "Error: no free port found after $attempts random attempts." >&2
|
||||
echo "Error: no free port found after $ATTEMPTS random attempts." >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
@@ -172,34 +172,34 @@ port_manage() {
|
||||
# update_port 8080
|
||||
# ==========================================
|
||||
update_port(){
|
||||
local port=$1
|
||||
local PORT=$1
|
||||
# 如果没有提供端口参数,则自动查找一个随机空闲端口
|
||||
if [[ -z "$port" ]]; then
|
||||
port=$(find_free_port 5000 15000)
|
||||
if [[ -z "$PORT" ]]; then
|
||||
PORT=$(find_free_port 5000 15000)
|
||||
fi
|
||||
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local config_dir="$script_dir/../config"
|
||||
modify_json_file "$config_dir/config.json" ".inbounds[0].listen_port" "$port"
|
||||
port_manage allow "$port"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local CONFIG_DIR="$SCRIPT_DIR/../config"
|
||||
modify_json_file "$CONFIG_DIR/config.json" ".inbounds[0].listen_port" "$PORT"
|
||||
port_manage allow "$PORT"
|
||||
echo "设置端口成功"
|
||||
}
|
||||
|
||||
# 通过交互方式更新端口
|
||||
ask_update_port(){
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
local config_file="$script_dir/../config/config.json"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||
|
||||
local current_port=$(get_listen_port)
|
||||
local new_port=$(ask_update "请输入新的端口号" "$current_port")
|
||||
update_port "$new_port"
|
||||
local CURRENT_PORT=$(get_listen_port)
|
||||
local NEW_PORT=$(ask_update "请输入新的端口号" "$CURRENT_PORT")
|
||||
update_port "$NEW_PORT"
|
||||
}
|
||||
|
||||
# 获取当前配置的监听端口
|
||||
get_listen_port(){
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
local config_file="$script_dir/../config/config.json"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||
|
||||
local port=$(jq -r ".inbounds[0].listen_port" "$config_file")
|
||||
echo $port
|
||||
local PORT=$(jq -r ".inbounds[0].listen_port" "$CONFIG_FILE")
|
||||
echo $PORT
|
||||
}
|
||||
|
||||
+25
-25
@@ -2,53 +2,53 @@
|
||||
|
||||
|
||||
print_share_link() {
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local config_dir=$(readlink -f "$script_dir/../config")
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local CONFIG_DIR=$(readlink -f "$SCRIPT_DIR/../config")
|
||||
|
||||
# 检查jq是否安装
|
||||
check_jq
|
||||
|
||||
config_file="$config_dir/config.json"
|
||||
CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||
|
||||
# 检查配置是否正确
|
||||
local uuid=$(jq -r '.inbounds[0].users[0].uuid' "$config_file")
|
||||
if [ "$uuid" = "你的UUID" ] || [ -z "$uuid" ] || [[ "$uuid" == null ]]; then
|
||||
local UUID=$(jq -r '.inbounds[0].users[0].uuid' "$CONFIG_FILE")
|
||||
if [ "$UUID" = "你的UUID" ] || [ -z "$UUID" ] || [[ "$UUID" == null ]]; then
|
||||
red "error: 配置有误, 请重新生成配置"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 读取配置文件内容
|
||||
local config=$(cat "$config_file")
|
||||
local CONFIG=$(cat "$CONFIG_FILE")
|
||||
|
||||
# 提取所需信息
|
||||
uuid=$(echo "$config" | jq -r '.inbounds[0].users[0].uuid')
|
||||
local sni=$(echo "$config" | jq -r '.inbounds[0].tls.server_name')
|
||||
local ipv4=$(curl -4 -sSL --connect-timeout 3 --retry 2 ip.sb || echo "null")
|
||||
local port=$(echo "$config" | jq -r '.inbounds[0].listen_port')
|
||||
local password=$(echo "$config" | jq -r '.inbounds[0].users[0].password')
|
||||
local congestion_control=$(echo "$config" | jq -r '.inbounds[0].congestion_control')
|
||||
local allowInsecure=1 # 是否跳过证书验证,1表示跳过,0表示不跳过
|
||||
local insecure=1 # 是否允许不安全连接,1表示允许,0表示不允许
|
||||
UUID=$(echo "$CONFIG" | jq -r '.inbounds[0].users[0].uuid')
|
||||
local SNI=$(echo "$CONFIG" | jq -r '.inbounds[0].tls.server_name')
|
||||
local IPV4=$(curl -4 -sSL --connect-timeout 3 --retry 2 ip.sb || echo "null")
|
||||
local PORT=$(echo "$CONFIG" | jq -r '.inbounds[0].listen_port')
|
||||
local PASSWORD=$(echo "$CONFIG" | jq -r '.inbounds[0].users[0].password')
|
||||
local CONGESTION_CONTROL=$(echo "$CONFIG" | jq -r '.inbounds[0].congestion_control')
|
||||
local ALLOW_INSECURE=1 # 是否跳过证书验证,1表示跳过,0表示不跳过
|
||||
local INSECURE=1 # 是否允许不安全连接,1表示允许,0表示不允许
|
||||
|
||||
# 检查是否使用ACME申请证书
|
||||
if jq -e '.inbounds[0].tls.acme' "$config_dir/config.json" > /dev/null 2>&1; then
|
||||
allowInsecure=0 # 不跳过证书验证
|
||||
insecure=0
|
||||
if jq -e '.inbounds[0].tls.acme' "$CONFIG_DIR/config.json" > /dev/null 2>&1; then
|
||||
ALLOW_INSECURE=0 # 不跳过证书验证
|
||||
INSECURE=0
|
||||
fi
|
||||
|
||||
# 构建分享链接
|
||||
local share_link="tuic://$uuid:$password@$ipv4:$port?sni=$sni&alpn=h3&insecure=$insecure&allowInsecure=$allowInsecure&congestion_control=$congestion_control#Tuic节点"
|
||||
local SHARE_LINK="tuic://$UUID:$PASSWORD@$IPV4:$PORT?sni=$SNI&alpn=h3&insecure=$INSECURE&allowInsecure=$ALLOW_INSECURE&congestion_control=$CONGESTION_CONTROL#Tuic节点"
|
||||
|
||||
# 输出分享链接
|
||||
echo -e "\033[32m"
|
||||
echo "IPV4: $ipv4"
|
||||
echo "port: $port"
|
||||
echo "uuid: $uuid"
|
||||
echo "password: $password"
|
||||
echo "sni: $sni"
|
||||
echo "congestion_control(拥塞控制算法): $congestion_control"
|
||||
echo "IPV4: $IPV4"
|
||||
echo "port: $PORT"
|
||||
echo "uuid: $UUID"
|
||||
echo "password: $PASSWORD"
|
||||
echo "sni: $SNI"
|
||||
echo "congestion_control(拥塞控制算法): $CONGESTION_CONTROL"
|
||||
echo ""
|
||||
echo "分享链接: $share_link"
|
||||
echo "分享链接: $SHARE_LINK"
|
||||
echo -e "\033[0m"
|
||||
}
|
||||
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
|
||||
|
||||
update_docker_images(){
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件绝对路径
|
||||
local compose_file="$script_dir/../docker-compose.yml" # docker-compose.yml文件路径
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件绝对路径
|
||||
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml" # docker-compose.yml文件路径
|
||||
|
||||
# 检查是否存在 docker-compose.yml 文件
|
||||
if [ ! -f $compose_file ]; then
|
||||
if [ ! -f $COMPOSE_FILE ]; then
|
||||
echo "Error: docker-compose.yml 文件不存在."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "正在关闭容器.."
|
||||
docker compose -f $compose_file down
|
||||
docker compose -f $COMPOSE_FILE down
|
||||
|
||||
echo "正在更新镜像.."
|
||||
docker compose -f $compose_file pull
|
||||
docker compose -f $COMPOSE_FILE pull
|
||||
|
||||
echo "正在删除未使用的镜像..."
|
||||
docker image prune -f
|
||||
|
||||
echo "正在启动容器.."
|
||||
docker compose -f $compose_file up -d
|
||||
docker compose -f $COMPOSE_FILE up -d
|
||||
}
|
||||
|
||||
|
||||
|
||||
+5
-5
@@ -1,15 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
run() {
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local compose_file="$script_dir/../docker-compose.yml"
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml"
|
||||
|
||||
# 如果容器已经启动, 则先停止容器
|
||||
if docker compose -f "$compose_file" ps | grep -q "Up"; then
|
||||
docker compose -f "$compose_file" down
|
||||
if docker compose -f "$COMPOSE_FILE" ps | grep -q "Up"; then
|
||||
docker compose -f "$COMPOSE_FILE" down
|
||||
fi
|
||||
|
||||
# 启动docker容器
|
||||
docker compose -f "$compose_file" up -d
|
||||
docker compose -f "$COMPOSE_FILE" up -d
|
||||
}
|
||||
|
||||
|
||||
@@ -2,25 +2,25 @@
|
||||
|
||||
|
||||
update_docker_images(){
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local compose_file="$script_dir/../docker-compose.yml" # docker-compose.yml文件路径
|
||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml" # docker-compose.yml文件路径
|
||||
|
||||
# 检查是否存在 docker-compose.yml 文件
|
||||
if [ ! -f $compose_file ]; then
|
||||
if [ ! -f $COMPOSE_FILE ]; then
|
||||
echo "Error: docker-compose.yml 文件不存在."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "正在关闭容器.."
|
||||
docker compose -f $compose_file down
|
||||
docker compose -f $COMPOSE_FILE down
|
||||
|
||||
echo "正在更新镜像.."
|
||||
docker compose -f $compose_file pull
|
||||
docker compose -f $COMPOSE_FILE pull
|
||||
|
||||
echo "正在删除未使用的镜像..."
|
||||
docker image prune -f
|
||||
|
||||
echo "正在启动容器.."
|
||||
docker compose -f $compose_file up -d
|
||||
docker compose -f $COMPOSE_FILE up -d
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user