部署到 Koyeb
在本指南中,您将设置并部署一个使用 Prisma ORM 和 PostgreSQL 连接到 Koyeb 的 Node.js 服务器。该应用程序公开 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 页面。
本指南的重点是展示如何将使用 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 [email protected]:<YOUR_GITHUB_USERNAME>/<YOUR_GITHUB_REPOSITORY_NAME>.git
git push -u origin main
3. 在 Koyeb 上部署应用程序
在 Koyeb 控制面板 上,单击 创建应用程序 按钮。
您将转到 Koyeb 应用程序创建页面,您需要在此提供有关要部署的应用程序的信息,例如要使用的部署方法、存储库 URL、要部署的分支、要执行的构建和运行命令。
选择 GitHub 作为部署方法,并选择包含您的应用程序的 GitHub 存储库,并将要部署的分支设置为 main
。
注意:如果您是第一次使用 Koyeb,系统会提示您在您的 GitHub 帐户中安装 Koyeb 应用程序。
在 环境变量 部分中,创建一个名为 DATABASE_URL
的新环境变量,其类型为 Secret。在值字段中,单击 创建 Secret,将您的 Secret 命名为 prisma-pg-url
,并将 PostgreSQL 数据库连接字符串设置为 Secret 值,这应该如下所示:postgresql://__USER__:__PASSWORD__@__HOST__/__DATABASE__
。 Koyeb Secrets 允许您安全地存储和检索敏感信息,如 API 令牌、数据库连接字符串。它们让您能够通过删除硬编码凭据来保护您的代码,并让您能够将环境变量安全地传递到您的应用程序。
最后,为您的应用程序命名,然后单击 创建应用程序 按钮。
检查点:通过单击部署的应用程序的屏幕截图打开已部署的应用程序。页面加载后,单击 检查 API 状态 按钮,它应返回:{"up":true}
恭喜!您已成功将应用程序部署到 Koyeb。
Koyeb 将构建并部署应用程序。对 GitHub 存储库的进一步提交将触发在 Koyeb 上进行新的构建和部署。
检查点:构建和部署完成后,您可以通过单击 Koyeb 控制面板中以 koyeb.app 结尾的应用程序 URL 来访问您的应用程序。页面加载后,单击 检查 API 状态 按钮,它应返回:{"up":true}
4. 测试您的已部署应用程序
您可以使用静态前端与您通过预览 URL 部署的 API 进行交互。
在浏览器中打开预览 URL,URL 应该类似于:https://APP_NAME-ORG_NAME.koyeb.app
。您应该看到以下内容
这些按钮允许您向 REST API 发出请求并查看响应
- 检查 API 状态:将调用返回
{"up":true}
的 REST API 状态端点。 - 播种数据:将在数据库中播种测试
user
和post
。返回已创建的用户。 - 加载提要:将加载数据库中所有
users
以及其相关的profiles
。
要深入了解 Prisma Client 的 API,请查看 src/index.js
文件中的路由处理程序。
您可以通过 Koyeb 控制面板中的应用程序服务上的 运行时日志
选项卡查看应用程序的日志
node-72d14691 stdout > [email protected] start
node-72d14691 stdout > node src/index.js
node-72d14691 stdout 🚀 Server ready at: https://127.0.0.1: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
文件中的路由处理程序。