58 lines
1.6 KiB
Bash
58 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
PORT="${PORT:-7031}"
|
|
CONTAINER_NAME="${CONTAINER_NAME:-fnos-resmon}"
|
|
INSTALL_DIR="${INSTALL_DIR:-/vol1/1000/HD1/docker/fnos-resmon}"
|
|
REPO_URL="https://gitea.88531.cn/jinghui/fnos-resmon.git"
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
echo "❌ 未检测到 Docker,请先安装 Docker"; exit 1
|
|
fi
|
|
if ! docker compose version >/dev/null 2>&1; then
|
|
echo "❌ 未检测到 docker compose"; exit 1
|
|
fi
|
|
if ! command -v git >/dev/null 2>&1; then
|
|
echo "❌ 未检测到 git"; exit 1
|
|
fi
|
|
|
|
# 自动探测 docker 根目录
|
|
if [ -d /vol1/1000/HD1/docker ]; then
|
|
COMPOSE_ROOT=/vol1/1000/HD1/docker
|
|
elif [ -d "$HOME/docker" ]; then
|
|
COMPOSE_ROOT="$HOME/docker"
|
|
else
|
|
COMPOSE_ROOT="$(dirname "$INSTALL_DIR")"
|
|
fi
|
|
|
|
if [ -d "$INSTALL_DIR/.git" ]; then
|
|
echo "🔄 检测到已有安装,执行更新..."
|
|
cd "$INSTALL_DIR"
|
|
git fetch origin main
|
|
git reset --hard origin/main
|
|
else
|
|
echo "📥 克隆项目..."
|
|
mkdir -p "$(dirname "$INSTALL_DIR")"
|
|
git clone "$REPO_URL" "$INSTALL_DIR"
|
|
cd "$INSTALL_DIR"
|
|
fi
|
|
|
|
cat > "$INSTALL_DIR/.env" <<EOF
|
|
PORT=$PORT
|
|
CONTAINER_NAME=$CONTAINER_NAME
|
|
COMPOSE_ROOT=$COMPOSE_ROOT
|
|
EOF
|
|
|
|
echo "🐳 启动/更新容器..."
|
|
docker compose -f "$INSTALL_DIR/docker-compose.yml" --env-file "$INSTALL_DIR/.env" up -d --build
|
|
|
|
echo "⏳ 等待服务就绪..."
|
|
for i in $(seq 1 30); do
|
|
if curl -s -o /dev/null -w '%{http_code}' "http://127.0.0.1:$PORT" | grep -q 200; then
|
|
echo "✅ 部署完成!访问 http://<NAS IP>:$PORT"
|
|
exit 0
|
|
fi
|
|
sleep 2
|
|
done
|
|
echo "⚠️ 服务可能未就绪,请检查 docker logs"
|
|
exit 1
|