From cad4cd2759ec12ded669b29e2417eaa2165a45cd Mon Sep 17 00:00:00 2001 From: LiuShen <3162475700@qq.com> Date: Wed, 13 Aug 2025 23:46:01 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=83=E5=AE=9E=E7=8E=B0=E8=BE=83?= =?UTF-8?q?=E4=B8=BA=E5=AE=8C=E5=96=84=E7=9A=84=E9=95=9C=E5=83=8F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8A=9F=E8=83=BD=EF=BC=8C=E7=9B=AE=E5=89=8D=E6=AD=A3?= =?UTF-8?q?=E5=9C=A8=E6=B5=8B=E8=AF=95=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pansou/latest/scripts/init.sh | 80 +++++++++++++++++++++++++++++--- pansou/latest/scripts/upgrade.sh | 80 +++++++++++++++++++++++++++++--- 2 files changed, 148 insertions(+), 12 deletions(-) diff --git a/pansou/latest/scripts/init.sh b/pansou/latest/scripts/init.sh index 390cc1d23..435cd4c8c 100644 --- a/pansou/latest/scripts/init.sh +++ b/pansou/latest/scripts/init.sh @@ -1,10 +1,78 @@ #!/bin/bash -# 替换docker-compose.yml中的ghcr.io为ghcr.nju.edu.cn -echo "开始替换镜像源地址..." -if sed -i 's/ghcr.io/ghcr.nju.edu.cn/g' ./docker-compose.yml; then - echo "成功: 已将ghcr.io替换为ghcr.nju.edu.cn" +# ===== 1. 定义当前应用的镜像类别 ===== +# 可选值:ghcr / quay / gcr / k8s_gcr / k8s_reg +MIRROR_TYPE="ghcr" + +# ===== 2. 配置文件路径 ===== +CONFIG_FILE="/opt/mirror-config.env" + +# ===== 3. 检查配置文件是否存在 ===== +if [ ! -f "$CONFIG_FILE" ]; then + echo "未找到配置文件 $CONFIG_FILE,跳过镜像替换步骤。" else - echo "错误: 替换镜像源地址失败" - exit 1 + # ===== 4. 加载配置文件 ===== + set -a + source "$CONFIG_FILE" + set +a + + # ===== 5. 根据镜像类别获取变量 ===== + case "$MIRROR_TYPE" in + ghcr) + ENABLE_VAR="$GHCR_ENABLE" + OLD_DOMAIN="ghcr.io" + NEW_DOMAIN="$GHCR_MIRROR" + ;; + quay) + ENABLE_VAR="$QUAY_ENABLE" + OLD_DOMAIN="quay.io" + NEW_DOMAIN="$QUAY_MIRROR" + ;; + gcr) + ENABLE_VAR="$GCR_ENABLE" + OLD_DOMAIN="gcr.io" + NEW_DOMAIN="$GCR_MIRROR" + ;; + k8s_gcr) + ENABLE_VAR="$K8S_GCR_ENABLE" + OLD_DOMAIN="k8s.gcr.io" + NEW_DOMAIN="$K8S_GCR_MIRROR" + ;; + k8s_reg) + ENABLE_VAR="$K8S_REG_ENABLE" + OLD_DOMAIN="registry.k8s.io" + NEW_DOMAIN="$K8S_REG_MIRROR" + ;; + *) + echo "未知的 MIRROR_TYPE: $MIRROR_TYPE" + ;; + esac + + # ===== 6. 检查是否启用镜像替换 ===== + if [ "$ENABLE_VAR" == "true" ]; then + # ===== 7. 检查 docker-compose 文件 ===== + if [ -f "./docker-compose.yml" ]; then + COMPOSE_FILE="./docker-compose.yml" + elif [ -f "./docker-compose.yaml" ]; then + COMPOSE_FILE="./docker-compose.yaml" + else + echo "未找到 docker-compose 文件,跳过替换。" + COMPOSE_FILE="" + fi + + # ===== 8. 执行替换 ===== + if [ -n "$COMPOSE_FILE" ]; then + echo "开始替换 $OLD_DOMAIN -> $NEW_DOMAIN ..." + if sed -i "s|$OLD_DOMAIN|$NEW_DOMAIN|g" "$COMPOSE_FILE"; then + echo "成功: 已将 $OLD_DOMAIN 替换为 $NEW_DOMAIN" + else + echo "错误: 替换镜像源地址失败" + fi + fi + else + echo "镜像替换未启用($MIRROR_TYPE)" + fi fi + +# ===== 9. 后续其他步骤 ===== +echo "这里执行 init.sh 的其他操作..." diff --git a/pansou/latest/scripts/upgrade.sh b/pansou/latest/scripts/upgrade.sh index 390cc1d23..435cd4c8c 100644 --- a/pansou/latest/scripts/upgrade.sh +++ b/pansou/latest/scripts/upgrade.sh @@ -1,10 +1,78 @@ #!/bin/bash -# 替换docker-compose.yml中的ghcr.io为ghcr.nju.edu.cn -echo "开始替换镜像源地址..." -if sed -i 's/ghcr.io/ghcr.nju.edu.cn/g' ./docker-compose.yml; then - echo "成功: 已将ghcr.io替换为ghcr.nju.edu.cn" +# ===== 1. 定义当前应用的镜像类别 ===== +# 可选值:ghcr / quay / gcr / k8s_gcr / k8s_reg +MIRROR_TYPE="ghcr" + +# ===== 2. 配置文件路径 ===== +CONFIG_FILE="/opt/mirror-config.env" + +# ===== 3. 检查配置文件是否存在 ===== +if [ ! -f "$CONFIG_FILE" ]; then + echo "未找到配置文件 $CONFIG_FILE,跳过镜像替换步骤。" else - echo "错误: 替换镜像源地址失败" - exit 1 + # ===== 4. 加载配置文件 ===== + set -a + source "$CONFIG_FILE" + set +a + + # ===== 5. 根据镜像类别获取变量 ===== + case "$MIRROR_TYPE" in + ghcr) + ENABLE_VAR="$GHCR_ENABLE" + OLD_DOMAIN="ghcr.io" + NEW_DOMAIN="$GHCR_MIRROR" + ;; + quay) + ENABLE_VAR="$QUAY_ENABLE" + OLD_DOMAIN="quay.io" + NEW_DOMAIN="$QUAY_MIRROR" + ;; + gcr) + ENABLE_VAR="$GCR_ENABLE" + OLD_DOMAIN="gcr.io" + NEW_DOMAIN="$GCR_MIRROR" + ;; + k8s_gcr) + ENABLE_VAR="$K8S_GCR_ENABLE" + OLD_DOMAIN="k8s.gcr.io" + NEW_DOMAIN="$K8S_GCR_MIRROR" + ;; + k8s_reg) + ENABLE_VAR="$K8S_REG_ENABLE" + OLD_DOMAIN="registry.k8s.io" + NEW_DOMAIN="$K8S_REG_MIRROR" + ;; + *) + echo "未知的 MIRROR_TYPE: $MIRROR_TYPE" + ;; + esac + + # ===== 6. 检查是否启用镜像替换 ===== + if [ "$ENABLE_VAR" == "true" ]; then + # ===== 7. 检查 docker-compose 文件 ===== + if [ -f "./docker-compose.yml" ]; then + COMPOSE_FILE="./docker-compose.yml" + elif [ -f "./docker-compose.yaml" ]; then + COMPOSE_FILE="./docker-compose.yaml" + else + echo "未找到 docker-compose 文件,跳过替换。" + COMPOSE_FILE="" + fi + + # ===== 8. 执行替换 ===== + if [ -n "$COMPOSE_FILE" ]; then + echo "开始替换 $OLD_DOMAIN -> $NEW_DOMAIN ..." + if sed -i "s|$OLD_DOMAIN|$NEW_DOMAIN|g" "$COMPOSE_FILE"; then + echo "成功: 已将 $OLD_DOMAIN 替换为 $NEW_DOMAIN" + else + echo "错误: 替换镜像源地址失败" + fi + fi + else + echo "镜像替换未启用($MIRROR_TYPE)" + fi fi + +# ===== 9. 后续其他步骤 ===== +echo "这里执行 init.sh 的其他操作..."