121 lines
3.1 KiB
Bash
121 lines
3.1 KiB
Bash
|
|
#!/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 ""
|