在 App Engine 柔性环境中创建自定义运行时应用
区域 ID
REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。
借助自定义运行时,您可以构建在 Dockerfile 定义的环境中运行的应用。通过使用 Dockerfile,您不仅可以使用Google Cloud 以外的语言和软件包,还可以使用 App Engine 柔性环境中所用的资源和工具。
在本快速入门中,我们会面向使用自定义运行时的 App Engine 启动 nginx Web 服务器。
准备工作
您需要先设置环境并为 App Engine 创建一个新的 Google Cloud 项目,然后才能运行此快速入门中的示例应用:
使用 Google Cloud 控制台创建新的 Google Cloud 项目:
下载并安装 Google Cloud CLI,然后初始化 gcloud CLI:
运行以下
gcloud命令以创建 App Engine 应用,并指定您希望在哪个地理区域运行应用:gcloud app create- 由于在新项目中 Cloud Build 使用服务账号的默认行为发生变化,以及从设计上保证安全的组织政策发生变化,您可能需要向部署服务账号授予额外的角色。如需详细了解如何授予特定角色,请参阅问题排查指南。
App Engine 位置
App Engine 是区域级的,这意味着运行您的应用的基础架构位于特定区域并由 Google 代管,以使其在该区域内的所有可用区以冗余方式提供。
选择要在哪个区域运行应用时,首先要考虑该区域是否能满足您的延迟时间、可用性或耐用性要求。通常,您可以选择距离应用的用户最近的区域,但应考虑提供 App Engine 的位置以及应用使用的其他Google Cloud 产品和服务的位置。跨多个位置使用服务可能会影响应用的延迟时间及其价格。
应用的区域一经设置,便无法更改。
如果您已创建 App Engine 应用,则可以通过执行以下任一操作来查看其区域:
运行
gcloud app describe命令。在 Google Cloud 控制台中打开 App Engine 信息中心。该区域会显示在页面顶部附近。
下载 Hello World 应用
从下列选项中选择一个,将 Hello World 示例应用从 GitHub 复制到本地机器上:
从下列代码库中克隆 Hello World 示例应用:
git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples以 zip 文件的形式下载该示例,然后将其解压缩到本地目录。
导航到示例代码所在的
nginx目录,例如:cd appengine-custom-runtimes-samples/nginx
在本地机器上运行 Hello World
您可以下载并安装 Docker,然后在本地计算机上运行 Hello World 容器,籍此测试示例应用。
目前没有 App Engine 专用步骤,因此您可以使用您喜欢的工具和方法测试示例应用。
将 Hello World 部署到 App Engine 上
做好将示例应用部署到 App Engine 的准备后,请执行以下步骤:
在
app.yaml和Dockerfile所在的目录中,运行以下命令:gcloud app deploy了解可选标志。
要查看您运行在
https://PROJECT_ID.REGION_ID.r.appspot.com上的应用,请运行以下命令启动浏览器:gcloud app browse
常见的 gcloud 命令标志
- 添加
--version标志,可以指定用来唯一标识应用版本的 ID,否则系统会为您生成一个 ID。示例:--version [YOUR_VERSION_ID] -
添加
--project标志,可以为您在gcloud工具中初始化为默认值的 Google Cloud 项目 ID 指定一个备用 ID。示例:--project [YOUR_PROJECT_ID]
示例:
gcloud app deploy --version pre-prod-5 --project my-sample-app
如需详细了解如何从命令行部署应用,请参阅测试和部署应用。如需查看所有命令标志的列表,请参阅 gcloud app deploy 参考。
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
后续步骤
如需详细了解 Dockerfiles,请参看 Dockerfile 参考。
如需了解如何创建自定义运行时,请参阅构建自定义运行时。
代码审核
Hello World 是最简单的 App Engine 应用,因为它只创建一个容器,该容器只运行一项服务和一个版本。本节详细介绍每个应用的文件。
app.yaml指定应用的配置。
app.yaml文件必须与Dockerfile文件位于同一目录中。runtime: custom条目告知 App Engine 查找定义运行时环境映像的Dockerfile和说明您正部署到柔性环境中的env: flex。如需了解详情,请参阅
app.yaml参考文档。Dockerfile定义用于为示例应用容器创建 Docker 映像的指令集。
Dockerfile文件必须与app.yaml文件位于同一目录中。此Dockerfile安装 nginx 网络服务器并复制一些基本配置:FROM 命令使用 nginx 网络服务器的官方 docker 映像构建基本映像。
如果使用此
Dockerfile,容器映像将包含 nginx,同时您的应用可以使用www/目录中的所有内容。
Hello World 示例应用还包含 nginx.conf 文件和 index.html 文件,前者包含基本的 nginx 配置信息,后者用作 nginx 网络服务器的根网页。