跳到主內容

部署到 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 頁面。

architecture diagram

本指南的重點是演示如何將使用 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}

deployed-screenshot

恭喜!您已成功將應用程式部署到 Koyeb。

Koyeb 將構建並部署應用程式。對您的 GitHub 倉庫的額外提交將觸發 Koyeb 上的新構建和部署。

檢查點: 構建和部署完成後,您可以透過點選 Koyeb 控制面板中以 koyeb.app 結尾的應用程式 URL 來訪問您的應用程式。頁面載入後,點選檢查 API 狀態按鈕,其應返回:{"up":true}

4. 測試您部署的應用程式

您可以使用靜態前端透過預覽 URL 與您部署的 API 進行互動。

在瀏覽器中開啟預覽 URL,URL 應該像這樣:https://APP_NAME-ORG_NAME.koyeb.app。您應該看到以下內容

deployed-screenshot

這些按鈕允許您向 REST API 發出請求並檢視響應

  • 檢查 API 狀態:將呼叫返回 {"up":true} 的 REST API 狀態端點。
  • 填充資料:將使用測試 userpost 填充資料庫。返回建立的使用者。
  • 載入 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 檔案中的路由處理程式。

© . This site is unofficial and not affiliated with Prisma Data, Inc.