ai_learn_node/scripts/deploy.sh
caoyuchun be1dab20e9 feat: 添加 Jenkins Docker 部署配置
- 添加 Jenkinsfile 和 Jenkinsfile.docker 支持 Docker 构建
- 添加 Docker Compose 生产环境配置
- 添加后端 Dockerfile
- 添加 Docker 部署脚本
- 添加部署文档 (JENKINS_DEPLOY.md, DOCKER_DEPLOY.md, DOCKER_ISOLATION.md)
- 更新 nginx 配置支持生产环境部署
2026-01-14 14:33:58 +08:00

55 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# 部署脚本 - 在远程服务器上执行
# 用法: ./deploy.sh <部署目录>
set -e
DEPLOY_DIR=${1:-/opt/nginx/html/ai/current}
BACKEND_DIR="$DEPLOY_DIR/backend"
echo "开始部署到: $DEPLOY_DIR"
# 检查部署目录是否存在
if [ ! -d "$DEPLOY_DIR" ]; then
echo "错误: 部署目录不存在: $DEPLOY_DIR"
exit 1
fi
# 进入后端目录
cd "$BACKEND_DIR" || exit 1
# 安装后端依赖(仅生产依赖)
if [ -f "package.json" ]; then
echo "安装后端依赖..."
npm ci --production || npm install --production
fi
# 初始化数据库(如果需要)
if [ -d "prisma" ]; then
echo "初始化数据库..."
# 检查数据库文件是否存在
if [ ! -f "prisma/dev.db" ]; then
echo "数据库不存在,执行迁移..."
npx prisma migrate deploy || npx prisma migrate dev
npx prisma generate
# 如果有 seed 文件,执行 seed
if [ -f "prisma/seed.ts" ]; then
npx tsx prisma/seed.ts || echo "Seed 执行失败或已存在数据"
fi
else
echo "数据库已存在,执行迁移..."
npx prisma migrate deploy || npx prisma migrate dev
npx prisma generate
fi
fi
# 设置文件权限
echo "设置文件权限..."
chmod +x dist/index.js 2>/dev/null || true
echo "部署脚本执行完成!"
echo "部署目录: $DEPLOY_DIR"
echo "前端文件: $DEPLOY_DIR"
echo "后端文件: $BACKEND_DIR"