#!/bin/bash # Sub2API 二次开发部署脚本 # 使用方法: bash deploy-dev.sh set -e echo "=====================================" echo " Sub2API 二开版本部署" echo " 端口: 2080" echo "=====================================" echo "" # 检查是否在 Git 仓库中 if [ ! -d ".git" ]; then echo "❌ 错误: 当前目录不是 Git 仓库" echo "请在项目根目录运行此脚本" exit 1 fi echo "📦 当前 Git 信息:" echo " 分支: $(git branch --show-current)" echo " 最新提交: $(git log -1 --oneline)" echo "" # 进入 deploy 目录 cd deploy # 检查配置文件 if [ ! -f "docker-compose.prod.yml" ]; then echo "📝 创建生产环境配置..." cp docker-compose.yml docker-compose.prod.yml # 修改端口为 2080 sed -i 's/\${SERVER_PORT:-8080}/2080/' docker-compose.prod.yml # 添加 extra_hosts 配置(连接宿主机 Redis) if ! grep -q "extra_hosts" docker-compose.prod.yml; then sed -i '/depends_on:/i\ extra_hosts:\n - "host.docker.internal:host-gateway"' docker-compose.prod.yml fi # 修改 Redis 配置 sed -i 's/REDIS_HOST=redis/REDIS_HOST=host.docker.internal/' docker-compose.prod.yml sed -i 's/REDIS_PASSWORD=\${REDIS_PASSWORD:-}/REDIS_PASSWORD=redis_bJFKDk/' docker-compose.prod.yml sed -i 's/REDIS_DB=\${REDIS_DB:-0}/REDIS_DB=1/' docker-compose.prod.yml echo "✅ docker-compose.prod.yml 已创建" fi # 创建 .env 文件 if [ ! -f ".env" ]; then echo "🔐 生成配置文件..." cat > .env << EOF # PostgreSQL 配置 POSTGRES_USER=sub2api POSTGRES_PASSWORD=$(openssl rand -base64 24) POSTGRES_DB=sub2api # 管理员账号 ADMIN_EMAIL=admin@example.com ADMIN_PASSWORD=admin123 # JWT 配置 JWT_SECRET=$(openssl rand -hex 32) JWT_EXPIRE_HOUR=24 # 其他配置 TZ=Asia/Shanghai SERVER_MODE=release RUN_MODE=standard EOF echo "✅ .env 文件已创建" echo "" echo "📋 生成的配置(请保存):" cat .env | grep -E "POSTGRES_PASSWORD|JWT_SECRET" echo "" else echo "⚠️ .env 已存在,跳过创建" fi # 拉取镜像 echo "" echo "📥 拉取 Docker 镜像..." docker-compose -f docker-compose.prod.yml pull # 启动服务 echo "" echo "🚀 启动服务..." docker-compose -f docker-compose.prod.yml up -d # 等待启动 echo "" echo "⏳ 等待服务启动..." sleep 10 # 显示状态 echo "" echo "📊 服务状态:" docker-compose -f docker-compose.prod.yml ps echo "" echo "=====================================" echo " ✅ 部署完成!" echo "=====================================" echo "" echo "📝 访问信息:" echo " URL: http://$(hostname -I | awk '{print $1}'):2080" echo " 管理员: admin@example.com / admin123" echo "" echo "📋 常用命令:" echo " 查看日志: docker-compose -f docker-compose.prod.yml logs -f" echo " 重启服务: docker-compose -f docker-compose.prod.yml restart" echo " 停止服务: docker-compose -f docker-compose.prod.yml down" echo "" echo "🔄 同步官方更新:" echo " git fetch upstream" echo " git merge upstream/main" echo ""