部署到 Render
本指南說明如何將使用 Prisma ORM 和 PostgreSQL 的 Node.js 伺服器部署到 Render。
Prisma Render 部署範例 包含一個具有 REST API 端點和簡單前端的 Express.js 應用程式。此應用程式使用 Prisma Client 從其資料庫中提取、建立和刪除記錄。
關於 Render
Render 是一個雲端應用程式平台,讓開發人員可以輕鬆部署和擴展全堆疊應用程式。對於此範例,了解以下資訊很有幫助:
- Render 讓您可以部署長時間運行的「伺服器型」全堆疊應用程式。您可以設定 Render 服務以根據 CPU 和/或記憶體使用量進行 自動擴展。這是您可以選擇的幾種 部署範例 之一。
- Render 原生支援 常見的執行環境,包括 Node.js 和 Bun。在本指南中,我們將使用 Node.js 執行環境。
- Render 與 Git 儲存庫整合,以便在提交時自動部署。您可以從 GitHub、GitLab 或 Bitbucket 部署到 Render。在本指南中,我們將從 Git 儲存庫進行部署。
先決條件
- 註冊 Render 帳戶
取得範例程式碼
將 範例程式碼 下載到您的本機電腦。
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
:此應用程式的資料模型。此範例定義了兩個模型:User
和Post
。此檔案的格式遵循 Prisma Schema。prisma/migrations/<migration name>/migration.sql
:在 PostgreSQL 資料庫中建構此 Schema 的 SQL 命令。您可以透過執行prisma migrate dev
來自動產生像這樣子的遷移檔案。
Render Blueprint
render.yaml
檔案是一個 Render Blueprint。Blueprint 是 Render 的基礎設施即程式碼格式。您可以使用 Blueprint 以程式化方式在 Render 上建立和修改服務。
render.yaml
定義了將由 Blueprint 在 Render 上啟動的服務。在此 render.yaml
中,我們看到:
- 使用 Node 執行環境的 Web 服務:這是 Express 應用程式。
- PostgreSQL 資料庫:這是 Express 應用程式使用的資料庫。
此檔案的格式遵循 Blueprint 規格。
Render 部署如何與 Prisma Migrate 協同運作
一般來說,您希望所有資料庫遷移在 Web 應用程式啟動之前執行。否則,當應用程式查詢沒有預期表格和列的資料庫時,可能會遇到錯誤。
您可以使用 Render 部署中的「Pre-Deploy Command」(部署前命令)設定,在應用程式啟動之前執行任何命令,例如資料庫遷移。
有關「Pre-Deploy Command」的更多詳細資訊,請參閱 Render 的部署指南。
在我們的範例程式碼中,render.yaml
顯示了 Web 服務的建置命令、「pre-deploy command」(部署前命令)和啟動命令。值得注意的是,npx prisma migrate deploy
(部署前命令)將在 npm run start
(啟動命令)之前執行。
命令 | 值 |
---|---|
建置命令 | npm install --production=false |
部署前命令 | npx prisma migrate deploy |
啟動命令 | npm run start |
部署範例
1. 初始化您的 Git 儲存庫
- 將 範例程式碼 下載到您的本機電腦。
- 在 GitHub、GitLab 或 BitBucket 上建立新的 Git 儲存庫。
- 將範例程式碼上傳到您的新儲存庫。
2. 手動部署
- 在 Render 儀表板中,點擊 New(新增) > PostgreSQL。提供資料庫名稱,並選擇方案。(免費方案適用於此示範。)
- 在您的資料庫準備就緒後,查找其 內部 URL。
- 在 Render 儀表板中,點擊 New(新增) > Web Service(Web 服務),並連線包含範例程式碼的 Git 儲存庫。
- 在服務建立期間提供以下值:
設定 | 值 |
---|---|
語言 | Node |
建置命令 | npm install --production=false |
部署前命令(注意:可能在「Advanced」(進階)標籤中) | npx prisma migrate deploy |
啟動命令 | npm run start |
環境變數 | 將 DATABASE_URL 設定為資料庫的內部 URL |
完成!您的 Web 服務將在其 onrender.com
URL 上線,一旦建置完成。
3. (選用)使用基礎設施即程式碼進行部署
您也可以使用 Render Blueprint 部署範例。依照 Render 的 [Blueprint 設定指南] 並使用範例中的 render.yaml
。
額外步驟:Seed 資料庫
Prisma ORM 包含一個用於 Seed 資料庫 的框架,其中包含起始資料。在我們的範例中,prisma/seed.js
定義了一些測試使用者和文章。
要將這些使用者新增到資料庫,我們可以選擇:
- 將 Seed 腳本新增到我們的「Pre-Deploy Command」(部署前命令),或
- 透過 SSH Shell 在我們的伺服器上手動執行命令
方法 1:部署前命令
如果您手動部署了 Render 服務:
- 在 Render 儀表板中,導覽至您的 Web 服務。
- 選擇 Settings(設定)。
- 將「Pre-Deploy Command」(部署前命令)設定為:
npx prisma migrate deploy; npx prisma db seed
如果您使用 Blueprint 部署了 Render 服務:
- 在您的
render.yaml
檔案中,將preDeployCommand
變更為:npx prisma migrate deploy; npx prisma db seed
- 提交變更到您的 Git 儲存庫。
方法 2:SSH
Render 允許您 SSH 連線到您的 Web 服務。
- 依照 Render 的 SSH 指南 連線到您的伺服器。
- 在 Shell 中,執行:
npx prisma db seed