49 lines
1.7 KiB
Bash
49 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
||
# 直接重启:检测 Docker 并一键安装(无则安装),再 docker compose 重启,不拉代码
|
||
# 用法:cd 项目根 && chmod +x restart.sh && ./restart.sh
|
||
# 行尾:LF
|
||
set -e
|
||
ROOT="${PROJECT_ROOT:-$(cd "$(dirname "$0")" && pwd)}"
|
||
cd "$ROOT"
|
||
|
||
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
|
||
compose_cmd() { run_sudo docker compose "$@" 2>/dev/null || run_sudo docker-compose "$@"; }
|
||
|
||
echo "重启 yh_web ($ROOT)..."
|
||
[ -f server/.env ] && sed -i 's/\r$//' server/.env
|
||
[ -f server/.env ] && set -a && source server/.env && set +a
|
||
|
||
compose_cmd down 2>/dev/null || true
|
||
compose_cmd up -d
|
||
|
||
echo "完成. api:9527 web:9528 admin:9529"
|