#!/bin/bash set -e # CloudSearch 一键部署脚本 # 用法: curl -sS https://gitea.timxx.cn/admin/CloudSearch/raw/branch/master/source_clean/deploy.sh | bash # # 可选环境变量: # CORS_ORIGIN - CORS 域名 (默认: https://zy.hk.timxx.cn) # JWT_SECRET - JWT 密钥 (留空自动生成) # ADMIN_PASSWORD - 管理员密码 (留空自动生成) # DEPLOY_DIR - 部署目录 (默认: /opt/cloudsearch) REPO_URL="https://gitea.timxx.cn/admin/CloudSearch.git" DEPLOY_DIR="${DEPLOY_DIR:-/opt/cloudsearch}" RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' info() { echo -e "${GREEN}[INFO]${NC} $*"; } err() { echo -e "${RED}[ERROR]${NC} $*"; } command -v docker &>/dev/null || { err "Docker 未安装"; exit 1; } info "拉取仓库..." if [ -d "$DEPLOY_DIR/.git" ]; then cd "$DEPLOY_DIR" && git pull --ff-only origin master 2>/dev/null || true else rm -rf "$DEPLOY_DIR" git clone --depth 1 "$REPO_URL" "$DEPLOY_DIR" fi cd "$DEPLOY_DIR/source_clean" info "配置镜像模式..." if grep -q '^ build:' docker-compose.yml 2>/dev/null; then sed -i 's/^ build:/ # build:/' docker-compose.yml sed -i 's/^ context:/ # context:/' docker-compose.yml sed -i 's/^ dockerfile:/ # dockerfile:/' docker-compose.yml sed -i 's|^ # image: gitea.timxx.cn/admin/cloudsearch:latest| image: gitea.timxx.cn/admin/cloudsearch:latest|' docker-compose.yml fi if [ ! -f .env ]; then JWT_SECRET="${JWT_SECRET:-$(openssl rand -hex 32)}" ADMIN_PASSWORD="${ADMIN_PASSWORD:-$(openssl rand -base64 12)}" cat > .env </dev/null || true info "启动服务..." docker compose down --remove-orphans 2>/dev/null || true docker compose up -d sleep 3 if docker compose ps | grep -q 'Up'; then echo "" echo "==============================================" echo -e " \033[0;32m✅ CloudSearch 部署完成\033[0m" echo "==============================================" docker compose ps echo "" echo " 管理后台: ${CORS_ORIGIN:-https://zy.hk.timxx.cn}/admin/login" echo " 用户名: admin" else err "启动失败: docker compose logs" exit 1 fi