使用 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/** # Only run this workflow when migrations are updated
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 }}
請確保您已將 DATABASE_URL
變數設定為您儲存庫中的 secret,連線字串周圍沒有引號。