Koyebへのデプロイ
このガイドでは、PostgreSQLとともにPrisma ORMを使用するNode.jsサーバーをKoyebにセットアップしてデプロイします。このアプリケーションはREST APIを公開し、Prisma Clientを使用してデータベースからのレコードのフェッチ、作成、削除を処理します。
Koyebは、グローバルにアプリケーションをデプロイするための開発者フレンドリーなサーバーレスプラットフォームです。このプラットフォームを使用すると、Dockerコンテナ、Webアプリケーション、およびAPIを、gitベースのデプロイ、TLS暗号化、ネイティブオートスケーリング、グローバルエッジネットワーク、および組み込みのサービスメッシュとディスカバリーを使用してシームレスに実行できます。
Koyebのgit駆動型デプロイメントメソッドを使用すると、コードの変更をGitHubリポジトリにプッシュするたびに、Koyebサーバーレスプラットフォームでアプリケーションの新しいビルドとデプロイが自動的にトリガーされます。このガイドでは、後者のアプローチを使用し、GitHub上のアプリのリポジトリにコードをプッシュします。
このアプリケーションには、次のコンポーネントがあります。
- バックエンド:PostgreSQLデータベース(Herokuでホストされているなど)に対してデータベース操作を処理するためにPrisma Clientを使用するリソースエンドポイントを備えたExpress.jsで構築されたNode.js REST API。
- フロントエンド:APIと対話するための静的なHTMLページ。
このガイドの焦点は、Prisma ORMを使用するプロジェクトをKoyebにデプロイする方法を示すことです。出発点は、Prisma Koyebの例です。これには、いくつかの事前構成されたRESTエンドポイントとシンプルなフロントエンドを備えたExpress.jsサーバーが含まれています。
注: ガイド全体にわたるさまざまなチェックポイントを使用すると、手順を正しく実行したかどうかを検証できます。
前提条件
- ホストされたPostgreSQLデータベースと、それにアクセスできるURL(例:
postgresql://username:password@your_postgres_db.cloud.com/db_identifier
)。(Supabaseを使用できます。Supabaseは無料プランを提供しています)。 - GitHubアカウントと、コードをプッシュするために使用する空の公開リポジトリ。
- Koyebアカウント。
- Node.jsがインストールされていること。
Prisma ORMワークフロー
Prisma ORMの中核となるのは、Prismaスキーマです。これは、データモデルとその他のPrisma ORM関連の構成を定義する宣言的な構成です。Prismaスキーマは、Prisma ClientとPrisma Migrateの両方にとっての単一の信頼できる情報源でもあります。
このガイドでは、Prisma Migrateを使用してデータベーススキーマを作成し、データベーススキーマを作成します。Prisma MigrateはPrismaスキーマに基づいており、データベースに対して実行される.sql
マイグレーションファイルを生成することで機能します。
Migrateには、2つの主要なワークフローが付属しています。
prisma migrate dev
を使用してローカル開発中にマイグレーションを作成して適用するprisma migrate deploy
を使用して生成されたマイグレーションを本番環境に適用する
簡潔にするために、このガイドでは、prisma migrate dev
でマイグレーションがどのように作成されるかについては説明しません。むしろ、本番環境のワークフローに焦点を当て、例のコードに含まれているPrismaスキーマとSQLマイグレーションを使用します。
Koyebのビルドステップを使用して、アプリケーションが開始される前にマイグレーションが適用されるように、prisma migrate deploy
コマンドを実行します。
Prisma Migrateでマイグレーションがどのように作成されるかの詳細については、ゼロからの開始ガイドを確認してください。
1. 例をダウンロードして依存関係をインストールする
ターミナルを開き、任意の場所に移動します。アプリケーションコードを保持するディレクトリを作成し、例のコードをダウンロードします。
mkdir prisma-on-koyeb
cd prisma-on-koyeb
curl https://github.com/koyeb/example-prisma/tarball/main/latest | tar xz --strip=1
チェックポイント: tree
コマンドを実行すると、次のディレクトリとファイルが表示されるはずです。
.
├── README.md
├── package.json
├── prisma
│ ├── migrations
│ │ ├── 20210310152103_init
│ │ │ └── migration.sql
│ │ └── migration_lock.toml
│ └── schema.prisma
├── public
│ └── index.html
└── src
└── index.js
5 directories, 8 files
依存関係をインストールします。
npm install
2. Gitリポジトリを初期化し、アプリケーションコードをGitHubにプッシュする
前の手順で、コードをダウンロードしました。この手順では、コードからリポジトリを作成して、デプロイのためにGitHubリポジトリにプッシュできるようにします。
これを行うには、ソースコードフォルダからgit init
を実行します。
git init
> Initialized empty Git repository in /Users/edouardb/prisma-on-koyeb/.git/
リポジトリを初期化したら、ファイルを追加してコミットします。
git add .
git commit -m 'Initial commit'
チェックポイント: git log -1
はコミットを表示するはずです。
git log -1
commit 895534590fdd260acee6396e2e1c0438d1be7fed (HEAD -> main)
次に、リモートを追加してコードをGitHubリポジトリにプッシュします。
git remote add origin git@github.com:<YOUR_GITHUB_USERNAME>/<YOUR_GITHUB_REPOSITORY_NAME>.git
git push -u origin main
3. Koyebにアプリケーションをデプロイする
Koyebコントロールパネルで、アプリの作成ボタンをクリックします。
Koyebアプリの作成ページに移動します。ここでは、使用するデプロイ方法、リポジトリURL、デプロイするブランチ、実行するビルドコマンドと実行コマンドなど、デプロイするアプリケーションに関する情報を求められます。
デプロイ方法としてGitHubを選択し、アプリケーションを含むGitHubリポジトリを選択して、デプロイするブランチをmain
に設定します。
注: Koyebを初めて使用する場合は、GitHubアカウントにKoyebアプリをインストールするように求められます。
環境変数セクションで、タイプがシークレットの新しい環境変数DATABASE_URL
を作成します。値フィールドで、シークレットの作成をクリックし、シークレットにprisma-pg-url
という名前を付けて、PostgreSQLデータベース接続文字列をシークレット値として設定します。これは、postgresql://__USER__:__PASSWORD__@__HOST__/__DATABASE__
のようになります。Koyebシークレットを使用すると、APIトークンやデータベース接続文字列などの機密情報を安全に保存および取得できます。ハードコードされた認証情報を削除してコードを保護し、環境変数をアプリケーションに安全に渡すことができます。
最後に、アプリケーションに名前を付けて、アプリの作成ボタンをクリックします。
チェックポイント: デプロイされたアプリのスクリーンショットをクリックして、デプロイされたアプリを開きます。ページが読み込まれたら、APIステータスの確認ボタンをクリックします。これにより、{"up":true}
が返されるはずです。
おめでとうございます!Koyebにアプリを正常にデプロイしました。
Koyebはアプリケーションをビルドしてデプロイします。GitHubリポジトリへの追加のコミットは、Koyebでの新しいビルドとデプロイをトリガーします。
チェックポイント: ビルドとデプロイが完了したら、Koyebコントロールパネルでkoyeb.appで終わるアプリURLをクリックしてアプリケーションにアクセスできます。アプリページが読み込まれたら、ページが読み込まれたら、APIステータスの確認ボタンをクリックします。これにより、{"up":true}
が返されるはずです。
4. デプロイされたアプリケーションをテストする
静的なフロントエンドを使用して、プレビューURL経由でデプロイしたAPIと対話できます。
ブラウザでプレビューURLを開きます。URLはhttps://APP_NAME-ORG_NAME.koyeb.app
のようになります。次のものが表示されるはずです。
ボタンを使用すると、REST APIにリクエストを送信して、応答を表示できます。
- APIステータスの確認:
{"up":true}
を返すREST APIステータスエンドポイントを呼び出します。 - データをシード:テスト
user
とpost
でデータベースをシードします。作成されたユーザーを返します。 - フィードをロード:データベース内のすべての
users
を関連するprofiles
とともにロードします。
Prisma ClientのAPIの詳細については、src/index.js
ファイルのルートハンドラーを参照してください。
Koyebコントロールパネルからアプリサービスのランタイムログ
タブをクリックして、アプリケーションのログを表示できます。
node-72d14691 stdout > prisma-koyeb@1.0.0 start
node-72d14691 stdout > node src/index.js
node-72d14691 stdout 🚀 Server ready at: https://#:8080
node-72d14691 stdout ⭐️ See sample requests: http://pris.ly/e/ts/rest-express#3-using-the-rest-api
Koyeb固有の注意点
ビルド
デフォルトでは、Node.jsランタイムを使用するアプリケーションの場合、package.json
にbuild
スクリプトが含まれている場合、Koyebは依存関係のインストール後に自動的に実行します。例では、build
スクリプトはprisma generate && prisma migrate deploy && next build
を実行するために使用されます。
デプロイメント
デフォルトでは、Node.jsランタイムを使用するアプリケーションの場合、package.json
にstart
スクリプトが含まれている場合、Koyebはアプリケーションを起動するために自動的に実行します。例では、start
スクリプトはnode src/index.js
を実行するために使用されます。
データベースのマイグレーションとデプロイメント
デプロイした例では、マイグレーションはKoyebビルド中にprisma migrate deploy
コマンドを使用して適用されます(package.json
のbuild
スクリプトで定義されているとおり)。
追加の注意点
このガイドでは、リージョン、インスタンスサイズ、および水平スケーリングのプリセット値を維持しました。ニーズに応じてカスタマイズできます。
注: [ポート]セクションは、アプリケーションがリッスンしているポートをKoyebに知らせ、受信HTTPリクエストを適切にルーティングするために使用されます。デフォルトの
PORT
環境変数は8080
に設定され、新しいアプリケーションを作成すると、受信HTTPリクエストは/
パスにルーティングされます。アプリケーションが別のポートでリッスンしている場合は、受信HTTPリクエストをルーティングする別のポートを定義できます。
まとめ
おめでとうございます!Node.jsアプリとPrisma ORMをKoyebに正常にデプロイしました。
例のソースコードは、このGitHubリポジトリにあります。
Prisma ClientのAPIの詳細については、src/index.js
ファイルのルートハンドラーを参照してください。