chore: 仅保留 pull-and-restart.sh 与 restart.sh,两脚本均检测并安装 Docker;删除其余脚本与 .bat

Made-with: Cursor
This commit is contained in:
whm
2026-03-17 15:16:15 +08:00
parent 20e7f3a65d
commit 1022d99708
8 changed files with 105 additions and 247 deletions

View File

@@ -1,12 +1,46 @@
#!/usr/bin/env bash
# 拉取代码并重启项目(线上项目根目录:/home/yxd/project/yh_web
# 行尾LF.gitattributes
# 用法cd /home/yxd/project/yh_web && ./pull-and-restart.sh
# 或指定目录PROJECT_ROOT=/home/yxd/project/yh_web ./pull-and-restart.sh
# 拉取代码并重启:检测 Docker 并一键安装(无则安装),再 git pull + docker compose 构建并启动
# 用法cd 项目根 && chmod +x pull-and-restart.sh && ./pull-and-restart.sh
# 行尾LF
set -e
ROOT="${PROJECT_ROOT:-$(cd "$(dirname "$0")" && pwd)}"
cd "$ROOT"
# 需要 sudo 时直接调用(会提示输入密码)
run_sudo() { sudo "$@"; }
# ---------- 检测并安装 Docker ----------
ensure_docker() {
if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
echo "Docker 已就绪."
return 0
fi
echo "未检测到 Docker 或未启动,正在安装..."
if command -v apt-get >/dev/null 2>&1; then
run_sudo apt-get update -qq
run_sudo apt-get install -y docker.io docker-compose-plugin 2>/dev/null || run_sudo apt-get install -y docker.io docker-compose
run_sudo systemctl start docker
run_sudo systemctl enable docker
elif command -v dnf >/dev/null 2>&1 || command -v yum >/dev/null 2>&1; then
if command -v dnf >/dev/null 2>&1; then
run_sudo dnf install -y docker docker-compose-plugin 2>/dev/null || run_sudo dnf install -y docker docker-compose
else
run_sudo yum install -y docker docker-compose-plugin 2>/dev/null || run_sudo yum install -y docker docker-compose
fi
run_sudo systemctl start docker
run_sudo systemctl enable docker
else
echo "无法自动安装 Docker请先安装 Docker 与 Docker Compose 后重试."
exit 1
fi
echo "Docker 安装完成."
}
ensure_docker
# 本脚本内统一用 sudo 执行 docker避免权限问题
docker_cmd() { run_sudo docker "$@"; }
compose_cmd() { run_sudo docker compose "$@" 2>/dev/null || run_sudo docker-compose "$@"; }
echo "=========================================="
echo " yh_web 拉取并重启"
echo " 路径: $ROOT"
@@ -16,13 +50,36 @@ echo "=========================================="
[ -f server/.env ] && set -a && source server/.env && set +a
echo "[1/2] 拉取代码..."
git pull
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
git pull
else
echo "未检测到 Git 仓库,正在克隆(需设置 GIT_REPO_URLexport GIT_REPO_URL='https://用户:Token@gitea.../web.git'..."
export GIT_TERMINAL_PROMPT=0
REPO_URL="${GIT_REPO_URL:-}"
BRANCH="${GIT_BRANCH:-master}"
if [ -z "$REPO_URL" ]; then
echo "错误:请设置环境变量 GIT_REPO_URL 后重试."
exit 1
fi
SELF="$(basename "$0")"
tmp_backup="/tmp/yh_web_deploy_$$"
mkdir -p "$tmp_backup"
[ -f "$SELF" ] && cp -a "$SELF" "$tmp_backup/"
[ -f server/.env ] && cp -a server/.env "$tmp_backup/" 2>/dev/null || true
git init -b "$BRANCH"
git remote add origin "$REPO_URL"
git fetch origin --progress
git reset --hard "origin/$BRANCH"
[ -f "$tmp_backup/$SELF" ] && cp -a "$tmp_backup/$SELF" "$SELF" && chmod +x "$SELF"
[ -f "$tmp_backup/.env" ] && mkdir -p server && cp -a "$tmp_backup/.env" server/.env
rm -rf "$tmp_backup"
fi
echo ""
echo "[2/2] 重新构建并启动(与 start-only-server 相同API 用 GOPROXY/vendor..."
echo "[2/2] 重新构建并启动..."
export GOPROXY="${GOPROXY:-https://goproxy.cn,direct}"
docker compose build --no-cache
docker compose up -d --force-recreate
compose_cmd build --no-cache
compose_cmd up -d --force-recreate
echo ""
echo "完成. api:9527 web:9528 admin:9529"