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などの一部のプラットフォームでは、ビルド中に開発依存関係が削除されるため、コマンドを呼び出せなくなります。これは、package.json
のdependencies
にprisma
を移動して、本番依存関係にすることで回避できます。migrate deploy
コマンドの詳細については、以下を参照してください。
GitHub Actionsを使用したデータベース変更のデプロイ
CI/CDの一部として、prisma migrate deploy
をパイプラインの一部として実行し、ペンディング中のマイグレーションを本番データベースに適用できます。
以下は、データベースに対してマイグレーションを実行するアクションの例です。
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 }}
ハイライトされた行は、このアクションがprisma/migrations
ディレクトリに変更があった場合にのみ実行されることを示しており、そのためnpx prisma migrate deploy
はマイグレーションが更新されたときにのみ実行されます。
DATABASE_URL
変数が、接続文字列を引用符で囲まずに、リポジトリにシークレットとして設定されていることを確認してください。