部署到 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 存储库部署。
先决条件
- 注册一个 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 模式和迁移
此应用程序的 Prisma 组件位于两个文件中:
prisma/schema.prisma
:此应用程序的数据模型。此示例定义了两个模型,User
和Post
。此文件的格式遵循 Prisma 模式。prisma/migrations/<migration name>/migration.sql
:在 PostgreSQL 数据库中构建此模式的 SQL 命令。您可以通过运行prisma migrate dev
自动生成像这样的迁移文件。
Render 蓝图
render.yaml
文件是一个Render 蓝图。蓝图是 Render 的基础设施即代码格式。您可以使用蓝图以编程方式在 Render 上创建和修改服务。
render.yaml
定义了 Render 通过蓝图启动的服务。在此 render.yaml
中,我们看到:
- 使用 Node 运行时的 Web 服务:这是 Express 应用程序。
- PostgreSQL 数据库:这是 Express 应用程序使用的数据库。
此文件的格式遵循 蓝图规范。
Render 部署如何与 Prisma Migrate 配合使用
通常,您希望在启动 Web 应用程序之前运行所有数据库迁移。否则,当应用程序查询没有预期表和行的数据库时,可能会遇到错误。
您可以使用 Render 部署中的“预部署命令”设置在启动应用程序之前运行任何命令,例如数据库迁移。
有关预部署命令的更多详细信息,请参阅Render 的部署指南。
在我们的示例代码中,render.yaml
显示了 Web 服务的构建命令、预部署命令和启动命令。值得注意的是,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 并连接包含示例代码的 Git 仓库。
- 在服务创建期间提供以下值
设置 | 值 |
---|---|
语言 | Node |
构建命令 | npm install --production=false |
预部署命令(注意:这可能在“高级”选项卡中) | npx prisma migrate deploy |
启动命令 | npm run start |
环境变量 | 将 DATABASE_URL 设置为数据库的内部 URL |
完成。您的 Web 服务将在构建完成后立即在其 onrender.com
URL 上线。
3. (可选)使用基础设施即代码进行部署
您也可以使用 Render Blueprint 部署该示例。 按照 Render 的 [Blueprint 设置指南],并使用示例中的 render.yaml
。
奖励:初始化数据库
Prisma ORM 包含一个用于初始化数据库并包含起始数据的框架。在我们的示例中,prisma/seed.js
定义了一些测试用户和帖子。
要将这些用户添加到数据库,我们可以选择
- 将初始化脚本添加到我们的预部署命令,或者
- 通过 SSH shell 在我们的服务器上手动运行该命令
方法 1:预部署命令
如果您手动部署了 Render 服务
- 在 Render 仪表盘中,导航到您的 Web 服务。
- 选择 Settings。
- 将预部署命令设置为:
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