メインコンテンツへスキップ

Prisma Migrateを使用したデータベース変更のデプロイ

ペンディング中のマイグレーションをステージング、テスト、または本番環境に適用するには、CI/CDパイプラインの一部としてmigrate deployコマンドを実行します。

npx prisma migrate deploy
情報

このガイドは**MongoDBには適用されません**。
migrate deployの代わりに、db pushMongoDBで使用されます。

prisma migrate deployを実行するタイミングは、お使いのプラットフォームによって異なります。例えば、簡略化されたHerokuワークフローには以下が含まれます。

  1. ./prisma/migrationフォルダがソース管理下にあることを確認する
  2. リリースフェーズ中にprisma migrate deployを実行する

理想的には、migrate deployは自動化されたCI/CDパイプラインの一部であるべきであり、本番データベースへの変更をデプロイするためにこのコマンドをローカルで実行すること(例えば、DATABASE_URL環境変数を一時的に変更することによって)は一般的に推奨されません。本番データベースのURLをローカルに保存することは、一般的に良い習慣とは見なされていません。

prisma migrate deployコマンドを実行するには、通常devDependenciesに追加されるprisma依存関係にアクセスする必要があることに注意してください。Vercelなどの一部のプラットフォームでは、ビルド中に開発依存関係が削除されるため、コマンドを呼び出せなくなります。これは、package.jsondependenciesprismaを移動して、本番依存関係にすることで回避できます。migrate deployコマンドの詳細については、以下を参照してください。

GitHub Actionsを使用したデータベース変更のデプロイ

CI/CDの一部として、prisma migrate deployをパイプラインの一部として実行し、ペンディング中のマイグレーションを本番データベースに適用できます。

以下は、データベースに対してマイグレーションを実行するアクションの例です。

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 }}

ハイライトされた行は、このアクションがprisma/migrationsディレクトリに変更があった場合にのみ実行されることを示しており、そのためnpx prisma migrate deployはマイグレーションが更新されたときにのみ実行されます。

DATABASE_URL変数が、接続文字列を引用符で囲まずに、リポジトリにシークレットとして設定されていることを確認してください。

© . All rights reserved.