部署到 Koyeb
在本指南中,您將設定一個使用 Prisma ORM 和 PostgreSQL 的 Node.js 伺服器,並將其部署到 Koyeb。該應用程式公開了一個 REST API,並使用 Prisma Client 處理從資料庫中獲取、建立和刪除記錄的操作。
Koyeb 是一個開發者友好的無伺服器平臺,用於在全球部署應用程式。該平臺支援無縫執行 Docker 容器、Web 應用和 API,具備基於 Git 的部署、TLS 加密、原生自動伸縮、全球邊緣網路以及內建的服務網格與服務發現功能。
當使用 Koyeb Git 驅動部署 方法時,每次您將程式碼更改推送到 GitHub 倉庫,Koyeb 無伺服器平臺都會自動觸發新的應用程式構建和部署。本指南採用後一種方法,即您將程式碼推送到應用程式在 GitHub 上的倉庫。
該應用程式包含以下元件
- 後端:使用 Express.js 構建的 Node.js REST API,其資源端點使用 Prisma Client 處理針對 PostgreSQL 資料庫(例如,託管在 Heroku 上)的資料庫操作。
- 前端:用於與 API 互動的靜態 HTML 頁面。

本指南的重點是演示如何將使用 Prisma ORM 的專案部署到 Koyeb。起點是 Prisma Koyeb 示例,其中包含一個帶有幾個預配置 REST 端點的 Express.js 伺服器和一個簡單的前端。
注意: 本指南中的各個檢查點允許您驗證是否正確執行了步驟。
先決條件
- 託管的 PostgreSQL 資料庫及其可訪問的 URL,例如
postgresql://username:password@your_postgres_db.cloud.com/db_identifier(您可以使用 Supabase,它提供 免費套餐)。 - 一個帶有我們將用於推送程式碼的空公共倉庫的 GitHub 賬戶。
- 一個 Koyeb 賬戶。
- 已安裝 Node.js。
Prisma ORM 工作流
Prisma ORM 的核心是 Prisma 模式——一個宣告式配置,您可以在其中定義資料模型以及其他與 Prisma ORM 相關的配置。Prisma 模式也是 Prisma Client 和 Prisma Migrate 的單一事實來源。
在本指南中,您將使用 Prisma Migrate 建立資料庫模式。Prisma Migrate 基於 Prisma 模式,透過生成針對資料庫執行的 .sql 遷移檔案來工作。
Migrate 包含兩種主要工作流
- 在本地開發期間使用
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 應用。
在環境變數部分,建立一個型別為“Secret”的新環境變數 DATABASE_URL。在值欄位中,點選建立 Secret,將您的 Secret 命名為 prisma-pg-url,並將 PostgreSQL 資料庫連線字串設定為 Secret 值,其格式應如下所示:postgresql://__USER__:__PASSWORD__@__HOST__/__DATABASE__。 Koyeb Secrets 允許您安全地儲存和檢索敏感資訊,例如 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填充資料庫。返回建立的使用者。 - 載入 Feed:將載入資料庫中所有
users及其相關的profiles。
要更深入瞭解 Prisma Client 的 API,請檢視 src/index.js 檔案中的路由處理程式。
您可以透過點選 Koyeb 控制面板中應用程式服務上的 Runtime logs 選項卡來檢視應用程式的日誌
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 請求。
總結
恭喜!您已成功將一個使用 Prisma ORM 的 Node.js 應用程式部署到 Koyeb。
您可以在 此 GitHub 倉庫 中找到示例的原始碼。
要更深入瞭解 Prisma Client 的 API,請檢視 src/index.js 檔案中的路由處理程式。