使用 Prisma Migrate 部署数据库变更
要将待处理的迁移应用到暂存、测试或生产环境,请在您的 CI/CD 管道中运行 migrate deploy
命令
npx prisma migrate deploy
何时运行 prisma migrate deploy
确切取决于您的平台。例如,简化的 Heroku 工作流程包括
- 确保
./prisma/migration
文件夹在源代码控制中 - 在 发布阶段 期间运行
prisma migrate deploy
理想情况下,migrate deploy
应该是自动化 CI/CD 管道的一部分,我们通常不建议在本地运行此命令来将更改部署到生产数据库(例如,通过临时更改 DATABASE_URL
环境变量)。本地存储生产数据库 URL 通常不是一个好的做法。
请注意,为了运行 prisma migrate deploy
命令,您需要访问通常添加到 devDependencies
的 prisma
依赖项。某些平台(如 Vercel)会在构建期间修剪开发依赖项,从而阻止您调用该命令。可以通过将 prisma
作为生产依赖项来解决此问题,方法是将其移动到 package.json
中的 dependencies
。有关 migrate deploy
命令的更多信息,请参阅
使用 GitHub Actions 部署数据库变更
作为 CI/CD 的一部分,您可以运行 prisma migrate deploy
作为管道的一部分,以将待处理的迁移应用到您的生产数据库。
这是一个示例 action,它将针对您的数据库运行迁移
deploy.yml
name: Deploy
on:
push:
paths:
- prisma/migrations/**
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
- name: Install dependencies
run: npm install
- name: Apply all pending migrations to the database
run: npx prisma migrate deploy
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
突出显示的行显示此 action 仅在 prisma/migrations
目录中发生更改时运行,因此 npx prisma migrate deploy
仅在迁移更新时运行。
确保您已将 DATABASE_URL
变量 设置为存储库中的 secret,连接字符串周围没有引号。