You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Github Actions无法访问的数据库中部署Prisma迁移?

解决Prisma迁移在EC2生产环境的部署问题

你偏好的方案3完全可行,核心是把迁移文件和执行迁移的必要工具打包到部署包,在EC2上完成迁移操作,具体实现步骤如下:

一、调整Webpack构建,保留迁移文件

Prisma的迁移文件存放在项目根目录的prisma/migrations下,需要确保Webpack构建时将这个目录(以及可选的schema.prisma)复制到输出目录。可以使用copy-webpack-plugin实现:

  1. 安装插件:
yarn add copy-webpack-plugin --dev
  1. 修改Webpack配置文件:
const CopyPlugin = require('copy-webpack-plugin');

module.exports = {
  // 原有Webpack配置(entry、output等)
  plugins: [
    // 新增复制规则
    new CopyPlugin({
      patterns: [
        { from: 'prisma/migrations', to: 'prisma/migrations' },
        { from: 'prisma/schema.prisma', to: 'prisma/schema.prisma' }, // 保留schema用于指定迁移路径
      ],
    }),
  ],
};

二、在EC2部署脚本中配置迁移执行环境

不需要打包整个node_modules,有两种方式在EC2上获取Prisma CLI:

方式1:临时安装Prisma CLI(简单易维护)

在EC2的部署脚本中,仅安装prisma包(而非全量依赖),速度快且风险低:

# 进入部署包目录
cd /opt/your-app-deployment-folder

# 临时安装prisma(--production只装生产依赖,--no-lockfile避免更新锁文件)
yarn add prisma --production --no-lockfile

# 执行迁移(确保已设置DATABASE_URL环境变量)
yarn prisma migrate deploy --schema ./prisma/schema.prisma

# 可选:迁移完成后移除临时安装的prisma
yarn remove prisma

方式2:打包Prisma引擎二进制文件(避免在线下载)

如果EC2无法访问外网,可以在本地构建时把Prisma的引擎文件打包到部署包:

  1. 本地安装依赖后,找到node_modules/@prisma/engines目录,用Webpack的CopyPlugin复制到输出目录:
new CopyPlugin({
  patterns: [
    // 原有迁移文件规则
    { from: 'node_modules/@prisma/engines', to: '@prisma/engines' },
  ],
}),
  1. 在EC2部署脚本中设置环境变量指向引擎路径,再执行迁移:
export PRISMA_ENGINES_PATH="./@prisma/engines"
yarn prisma migrate deploy --schema ./prisma/schema.prisma

三、迁移执行的安全与优化

  • 确保部署包的权限设置正确,仅允许运行后端服务的系统用户读取迁移文件和Prisma相关文件。
  • 执行迁移前可添加prisma migrate status命令,检查当前数据库状态与迁移文件的一致性,避免无效执行或冲突:
yarn prisma migrate status --schema ./prisma/schema.prisma
  • 如果是多EC2实例部署,需确保只有一个实例执行迁移(可通过文件锁、Redis锁或AWS DynamoDB锁实现,避免重复执行)。

替代方案:用AWS Lambda执行迁移

如果不想在EC2实例上处理迁移,可以创建一个绑定VPC的Lambda函数,打包迁移文件和Prisma CLI,在CI/CD流程中调用该Lambda执行迁移。这种方式无需修改EC2部署流程,且能通过Lambda的权限控制确保安全性,适合多实例部署场景(需加分布式锁避免重复执行)。

内容的提问来源于stack exchange,提问作者user274595

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:15:32