使用 MEAN 堆栈的现代 Web 应用程序
本教程可能会发生成本。 使用 成本估算器根据您的预计使用量生成成本估算。
本教程将指导您使用热门 MEAN 堆栈创建 Web 应用程序。 它由一个 M ongoDB、E xpress web框架、一个 ngular前端框架和一个 Node.js 运行时组成。 您将学习如何在本地运行MEAN示例应用程序,创建和使用托管数据库即服务 DBasS ),将应用程序部署到 IBM Cloud,并扩展运行时和数据库资源。
目标
- 在本地创建并运行Node.js 示例应用。
- 创建受管 Databases for MongoDB 实例。
- 使用 IBM Cloud® Code Engine Node.js部署到云端。
- 扩展运行时 CPU 和内存资源。
- 调整数据库内存和磁盘资源。
- 用户使用 Web 浏览器访问应用程序。
- 在 Code Engine 中运行的 Node.js 应用程序会访问 Databases for MongoDB 数据库以访存数据。
准备工作
本教程需要:
- IBM Cloud CLI-此 CLI 工具将使您能够与 IBM Cloud进行交互。
- 用于 CLI 访问 Code Engine 资源的 code-engine/ce 插件 (
code-engine/ce
)。 - 可选 Container Registry 插件 (
container-registry
),用于管理容器映像。
- 用于 CLI 访问 Code Engine 资源的 code-engine/ce 插件 (
git
以克隆源代码存储库。- 可选,如果要在本地测试运行应用程序,那么将需要 安装 Node.js。
您将在 教程入门 指南中找到有关为您的操作环境下载和安装这些工具的指示信息。
要避免安装这些工具,可以从 IBM Cloud 控制台使用 Cloud Shell。
本教程演示如何使用命令行来创建数据库,IBM Cloud® Code Engine 项目和应用程序。 配套 GitHub 存储库 中提供了指示信息,用于在工作站上本地使用 Terraform 进行供应,或者只需单击几次即可使用 Schematics 进行更简单的供应。
在云中创建 MongoDB 数据库的实例
在此部分中,您将在云中创建 Databases for MongoDB 实例。Databases for MongoDB 是易于配置并提供内置备份和缩放的数据库即服务。 您可以在 IBM Cloud 目录中找到许多不同类型的数据库。 要创建 Databases for MongoDB 实例,请遵循以下步骤。
-
如果您尚未登录,请使用
ibmcloud login
或ibmcloud login --sso
进行交互式登录。 将首选 IBM Cloud 区域和资源组作为目标。 在以下示例中,我们将使用ca-tor (Toronto)
区域和default
资源组。ibmcloud target -r ca-tor -g default
您可以在文档中的 常规 IBM Cloud CLI(ibmcloud)命令 主题中找到更多 CLI 命令。
-
通过 命令行 或使用 控制台 UI 创建 Databases for MongoDB 的实例。 服务名称必须命名为 mean-stack-mongodb,因为本教程中使用的应用程序配置为按此名称查找服务。 对于
<region>
,您可以选择离您更近的区域,但是我们将在本教程中使用ca-tor
。ibmcloud resource service-instance-create mean-stack-mongodb databases-for-mongodb standard ca-tor
-
等待实例准备就绪。 可以使用以下命令检查供应的状态:
ibmcloud resource service-instance mean-stack-mongodb
-
当您确认服务状态变为“创建成功”后,即可创建服务密钥。
ibmcloud resource service-key-create mean-stack-mongodb-key --instance-name mean-stack-mongodb
本地运行 MEAN 应用程序
在此部分中,您将克隆 MEAN 样本代码,并在本地运行应用程序,以测试与 IBM Cloud 上运行的 MongoDB 数据库的连接。
-
复制MEAN示例代码。
git clone https://github.com/IBM-Cloud/nodejs-MEAN-stack cd nodejs-MEAN-stack
-
复制
.env.example
文件到.env
。cp .env.example .env
-
在 .env 文件中,添加您自己的 SESSION_SECRET。 对于MONGODB_URL和 CERTIFICATE_BASE64,请运行以下命令:
ibmcloud resource service-key mean-stack-mongodb-key --output json
您可以在
credentials -> connection -> mongodb -> composed
下找到 MONGODB_URL 所需的值,在返回的 JSON 输出中在credentials -> connection -> mongodb -> certificate -> certificate_base64
下找到 CERTIFICATE_BASE64 的值。 确保添加到.env
的值不包含任何引号或空格。 -
可选——安装所需的软件包。
npm install
-
可选——在本地运行应用程序。 使用输出中提供的 URL 访问应用程序,创建新用户并登录。
node server.js
通过使用云 shell,可以通过单击右上方的 eye 图标并单击端口 8080 上的预览来打开应用程序。
将应用程序部署到云
IBM Cloud® Code Engine 是一个完全受管的无服务器平台,用于运行容器化工作负载,包括 Web 应用程序,微服务,事件驱动功能或批处理作业。 在此部分中,您将创建 Code Engine 项目,并将容器化的 Node.js 应用程序部署到该项目。 在上一节中,源代码读取您本地保存的 .env
,以获取 MongoDB
URL 和凭证。 您将在项目中创建一个私钥,以包含这些将由应用程序在运行时读取的相同键/值。
我们已经为应用程序构建了容器映像,并将其推送到公共 IBM Cloud Container Registry。 您将使用此预构建的容器映像来部署应用程序。
-
IBM Cloud Code Engine创建一个项目。
ibmcloud code-engine project create --name mean-stack
-
在项目中创建一个私钥,其中包含先前用于在本地运行应用程序的
.env
文件中的密钥/值,此私钥将由在云中运行的应用程序使用。 有关私钥的更多信息,请参阅 使用私钥。ibmcloud code-engine secret create --name mean-stack-secrets --from-env-file .env
-
根据基于从
https://github.com/IBM-Cloud/nodejs-MEAN-stack
存储库下载的相同源代码的公共容器映像来创建应用程序。 如果您对用于创建此映像的步骤感兴趣,那么可以查看 create-container-image.md。ibmcloud code-engine application create --name mean-stack-application --image icr.io/solution-tutorials/tutorial-mean-stack --env-from-secret mean-stack-secrets
-
代码推送后,您应该可以在浏览器中查看应用程序。 已生成类似如下的主机名:
https://mean-stack.<CE_SUBDOMAIN>.ca-tor.codeengine.appdomain.cloud/
。CE_SUBDOMAIN
是 注入到项目中并在创建项目期间确定其值 的变量。 您可以在控制面板或命令行中获取应用程序URL。 访问应用程序后,它应该如下所示:实时应用程序
缩放 Code Engine 中的计算资源
Code Engine 监控系统中的请求数量,并 调整应用程序实例的数量,以满足传入请求的负载,包括与应用程序的任何 HTTP 连接。 如果您的服务需要额外的计算资源,或者您想要减少分配的计算资源量,那么可以在特定应用程序页面中进行这些更改。
-
浏览至 Code Engine "项目" 页面。
-
单击先前创建的 mean-stack 项目。
-
在 摘要下,单击 应用程序。
-
单击先前创建的 mean-stack-application。
-
单击 配置,然后单击 运行时 以查看当前配置。
缩放资源 -
单击 编辑并创建新修订 以不仅调整 CPU 和内存,最小/最大实例数 以及 并行。
-
单击 保存并创建 以触发更改。 它将指示应用程序在完成时为
Deploying
和Ready
。
缩放 Databases for MongoDB 中的数据库资源
如果您的服务需要额外存储空间,或者您要减少分配给服务的存储量,那么可以通过缩放资源来完成此操作。
- 从 数据库下的 资源列表 访问 Databases for MongoDB 服务实例。
- 单击 资源 面板。
缩放资源 - 调整滑块以增加或减少分配给 Databases for MongoDB 数据库服务的存储量。
- 单击缩放部署以触发重新缩放并返回到仪表板概述页面。 这将指示正在进行重新缩放。
- 或者,配置自动缩放规则,以在数据库资源使用量增加时自动增加这些资源。
除去资源
要除去资源,请执行以下步骤:
- 使用下面的命令,删除项目以删除其所有组件 (应用程序,作业等)。
ibmcloud code-engine project delete --name mean-stack
- 删除 Databases for MongoDB 服务密钥。
ibmcloud resource service-key-delete mean-stack-mongodb-key
- 删除 Databases for MongoDB 服务。
ibmcloud resource service-instance-delete mean-stack-mongodb
根据资源的不同,可能不会立即将其删除,但会保留 (缺省情况下为 7 天)。 您可以通过永久删除该资源或在保留期内将其复原来回收该资源。 请参阅本文档,以了解如何 使用资源回收。