在 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
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 指定一个备用 Google Cloud 项目 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 网络服务器的根网页。