Netlifyへのデプロイ
このガイドでは、Prisma ORMを使用するアプリケーションをNetlifyにデプロイするために必要な手順を説明します。
Netlify は、継続的デプロイ、静的サイト、サーバーレス関数向けのクラウドプラットフォームです。Netlify は GitHub とシームレスに統合されており、コミット時に自動デプロイが行われます。以下の手順に従うと、そのアプローチを使用して GitHub リポジトリからアプリケーションをデプロイする CI/CD パイプラインを作成できます。
前提条件
このガイドに従う前に、Netlifyへのデプロイを開始するためにアプリケーションをセットアップする必要があります。手軽に概要を把握するには「Netlifyを始める」ガイドを、デプロイオプションの詳細については「関数をデプロイする」を参照することをお勧めします。
schema.prisma
のバイナリターゲット
コードはNetlifyの環境にデプロイされるため、開発環境と必ずしも同じではありません。ビルドステップ中にNetlifyランタイムと互換性のあるクエリエンジンをダウンロードするには、binaryTargets
を設定する必要があります。このオプションを設定しない場合、デプロイされたコードには誤ったクエリエンジンが含まれ、機能しません。
Node.jsのバージョンに応じて、Prismaスキーマのgenerator
ブロックにrhel-openssl-1.0.x
またはrhel-openssl-3.0.x
を含める必要があります
- Node.js 16 および 18
- Node.js 20 以降
binaryTargets = ["native", "rhel-openssl-1.0.x"]
binaryTargets = ["native", "rhel-openssl-3.0.x"]
Netlifyに環境変数を保存する
機密性の高い接続文字列の漏洩を防ぐため、.env
ファイルを.gitignore
に含めることをお勧めします。代わりに、Netlify CLIを使用して値をNetlifyに直接インポートできます。
以下のようなファイルがあると仮定します
# Connect to DB
DATABASE_URL="postgresql://postgres:__PASSWORD__@__HOST__:__PORT__/__DB_NAME__"
env:import
コマンドを使用してファイルを環境変数としてアップロードできます
netlify env:import .env
site: my-very-very-cool-site
---------------------------------------------------------------------------------.
Imported environment variables |
---------------------------------------------------------------------------------|
Key | Value |
--------------|------------------------------------------------------------------|
DATABASE_URL | postgresql://postgres:__PASSWORD__@__HOST__:__PORT__/__DB_NAME__ |
---------------------------------------------------------------------------------'
.env
ファイルを使用していない場合
データベース接続文字列やその他の環境変数を別の方法で保存している場合、手動で環境変数をNetlifyにアップロードする必要があります。これらのオプションはNetlifyのドキュメントで説明されており、そのうちの1つの方法(UIを介したアップロード)を以下に示します。
- サイトのNetlify管理UIを開きます。Netlify CLIを次のように使用できます
netlify open --admin
- サイト設定をクリックします:
- 左側のサイドバーでビルドとデプロイに移動し、環境を選択します。
- 変数を編集をクリックし、キー
DATABASE_URL
の変数を作成し、その値をデータベース接続文字列に設定します。 - 保存をクリックします。
新しいビルドが新しくアップロードされた環境変数を使用できるように、Netlifyでの新規ビルドとデプロイを開始します。
netlify deploy
デプロイされたアプリケーションをテストできるようになりました。
接続プール
NetlifyのようなFunction-as-a-Serviceプロバイダーを使用する場合、パフォーマンス上の理由からデータベース接続をプールすることが有益です。これは、すべての関数呼び出しがデータベースへの新しい接続を引き起こし、すぐにオープン接続が枯渇する可能性があるためです。
接続プールにはAccelerate、または組み込みの接続プールを備えたPrisma Postgresを使用して、Prisma Clientのバンドルサイズを削減し、コールドスタートを回避できます。
サーバーレス環境での接続管理に関する詳細は、弊社の接続管理ガイドを参照してください。