ローカル環境からマイグレーションをデプロイする
ローカル環境から直接本番環境にマイグレーションをデプロイすることを検討するシナリオが2つあります。
- ローカルCI/CDパイプラインを持っている
- 本番環境をベースライン化している
このページでは、その方法の例と、一般的に推奨しない理由を説明します。
ローカルCI/CDパイプライン
自動化されたCI/CDプロセスがない場合でも、技術的には以下の方法でローカル環境から本番環境に新しいマイグレーションをデプロイできます。
- マイグレーション履歴が最新であることを確認してください。これは、
prisma migrate dev
を実行することで行え、最新の変更からマイグレーション履歴が生成されます。 - ローカルの接続URLを本番の接続URLに置き換える
.env
//delete-next-line
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_local_database"
//add-next-line
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_production_database"
prisma migrate deploy
を実行する
⛔
以下の理由から、この解決策は強く推奨しません
- 本番データベースの接続URLがバージョン管理に公開されるリスクがあります。
- 誤って本番の接続URLを使用してしまい、結果として本番データベースを上書きまたは削除してしまう可能性があります。
✅ 自動化されたCI/CDパイプラインのセットアップを推奨します
パイプラインは、ステージング環境と本番環境へのデプロイを処理し、パイプラインステップでmigrate deploy
を使用する必要があります。例については、デプロイガイドを参照してください。
本番データベースのベースライン化
既存のデータベースにPrisma Migrateを追加する場合、本番データベースをベースライン化する必要があります。ベースライン化は1回実行され、ローカルインスタンスから行うことができます。