跳到主要內容

部署到 Render

本指南介紹瞭如何將使用 Prisma ORM 和 PostgreSQL 的 Node.js 伺服器部署到 Render。

Prisma Render 部署示例包含一個具有 REST 端點和簡單前端的 Express.js 應用程式。該應用程式使用 Prisma Client 從其資料庫中獲取、建立和刪除記錄。

關於 Render

Render 是一個雲應用程式平臺,讓開發者能夠輕鬆部署和擴充套件全棧應用程式。對於本示例,瞭解以下內容會有所幫助:

  • Render 允許你部署長時間執行的“有伺服器”全棧應用程式。你可以配置 Render 服務,使其根據 CPU 和/或記憶體使用情況進行自動擴縮。這是你可以選擇的幾種部署範例之一。
  • Render 原生支援常見的執行時,包括 Node.js 和 Bun。在本指南中,我們將使用 Node.js 執行時。
  • Render 與 Git 倉庫整合,可在提交時自動部署。你可以從 GitHub、GitLab 或 Bitbucket 部署到 Render。在本指南中,我們將從 Git 倉庫部署。

先決條件

獲取示例程式碼

示例程式碼 下載到你的本地機器。

curl https://codeload.github.com/prisma/prisma-examples/tar.gz/latest | tar -xz --strip=2 prisma-examples-latest/deployment-platforms/render
cd render

理解示例

在部署應用程式之前,讓我們先看看示例程式碼。

Web 應用程式

Express 應用程式的邏輯在兩個檔案中

  • src/index.js:API。端點使用 Prisma Client 從資料庫中獲取、建立和刪除資料。
  • public/index.html:Web 前端。前端呼叫了幾個 API 端點。

Prisma schema 和遷移

此應用程式的 Prisma 元件在兩個檔案中

  • prisma/schema.prisma:此應用程式的資料模型。此示例定義了兩個模型:UserPost。此檔案的格式遵循 Prisma schema
  • prisma/migrations/<migration name>/migration.sql:在 PostgreSQL 資料庫中構建此 schema 的 SQL 命令。你可以透過執行 prisma migrate dev 自動生成此類遷移檔案。

Render Blueprint

render.yaml 檔案是 Render Blueprint。藍圖是 Render 的基礎設施即程式碼格式。你可以使用藍圖以程式設計方式在 Render 上建立和修改服務。

一個 render.yaml 檔案定義了藍圖將在 Render 上啟動的服務。在此 render.yaml 中,我們看到

  • 使用 Node 執行時的 Web 服務:這是 Express 應用程式。
  • PostgreSQL 資料庫:這是 Express 應用程式使用的資料庫。

此檔案的格式遵循藍圖規範

Render 部署如何與 Prisma Migrate 協同工作

通常,你希望所有資料庫遷移都在 Web 應用程式啟動之前執行。否則,應用程式在查詢不包含預期表和行的資料庫時可能會遇到錯誤。

你可以在 Render 部署中使用“部署前命令”(Pre-Deploy Command)設定,在應用程式啟動之前執行任何命令,例如資料庫遷移。

有關部署前命令的更多詳細資訊,請參閱 Render 的部署指南

在我們的示例程式碼中,render.yaml 顯示了 Web 服務的構建命令、部署前命令和啟動命令。值得注意的是,npx prisma migrate deploy(部署前命令)將在 npm run start(啟動命令)之前執行。

命令
構建命令npm install --production=false
部署前命令npx prisma migrate deploy
啟動命令npm run start

部署示例

1. 初始化你的 Git 倉庫

  1. 示例程式碼 下載到你的本地機器。
  2. 在 GitHub、GitLab 或 BitBucket 上建立一個新的 Git 倉庫。
  3. 將示例程式碼上傳到你的新倉庫。

2. 手動部署

  1. 在 Render 控制面板中,點選 新建 > PostgreSQL。提供一個數據庫名稱,並選擇一個計劃。(免費計劃適用於此演示。)
  2. 資料庫準備就緒後,查詢其 內部 URL
  3. 在 Render 控制面板中,點選 新建 > Web 服務 並連線包含示例程式碼的 Git 倉庫。
  4. 在服務建立過程中提供以下值
設定
語言Node
構建命令npm install --production=false
部署前命令(注意:這可能在“高階”選項卡中)npx prisma migrate deploy
啟動命令npm run start
環境變數DATABASE_URL 設定為資料庫的內部 URL

就這樣。構建完成後,你的 Web 服務將在其 onrender.com URL 上線。

3. (可選)使用基礎設施即程式碼部署

你也可以使用 Render Blueprint 部署示例。遵循 Render 的 [Blueprint setup guide] 並使用示例中的 render.yaml

額外:填充資料庫

Prisma ORM 包含一個用於填充資料庫的框架。在我們的示例中,prisma/seed.js 定義了一些測試使用者和帖子。

要將這些使用者新增到資料庫,我們可以選擇

  1. 將填充指令碼新增到我們的部署前命令,或者
  2. 透過 SSH shell 在我們的伺服器上手動執行命令

方法 1:部署前命令

如果你手動部署了 Render 服務

  1. 在 Render 控制面板中,導航到你的 Web 服務。
  2. 選擇設定
  3. 將部署前命令設定為:npx prisma migrate deploy; npx prisma db seed

如果你使用藍圖部署了 Render 服務

  1. 在你的 render.yaml 檔案中,將 preDeployCommand 更改為:npx prisma migrate deploy; npx prisma db seed
  2. 將更改提交到你的 Git 倉庫。

方法 2:SSH

Render 允許你透過 SSH 連線到你的 Web 服務。

  1. 遵循 Render 的 SSH 指南 連線到你的伺服器。
  2. 在 shell 中,執行:npx prisma db seed
© . This site is unofficial and not affiliated with Prisma Data, Inc.