跳到主要内容

部署到 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
© . All rights reserved.