地区 ID
REGION_ID
是 Google 根据您在创建应用时选择的地区分配的缩写代码。此代码不对应于国家/地区或省,尽管某些地区 ID 可能类似于常用国家/地区代码和省代码。在 App Engine 网址中包含 REGION_ID.r
对于现有应用是可选项,但在不久后将成为所有新应用的必要项。
为了确保顺利过渡,我们正在逐步更新 App Engine 以使用地区 ID。如果我们尚未更新您的 Google Cloud 项目,则您不会看到应用的区域 ID。由于该 ID 对于现有应用是可选的,因此您在现有应用可以使用区域 ID 后无需更新网址或进行其他更改。
详细了解区域 ID。
了解如何在本地运行您的应用,以及如何在 App Engine 上部署和测试应用。
在本地运行
要在部署之前测试应用的功能,请使用您经常使用的开发工具在本地环境中运行应用。
部署应用
使用 gcloud app deploy
命令将您的应用部署到 App Engine。该命令会先使用 Cloud Build 服务自动构建一个容器映像,然后再将该映像部署到 App Engine 柔性环境。这个容器将包含您对运行时映像所做的全部本地修改。
如需以编程方式部署应用,请使用 Admin API。
准备工作
在部署应用之前,请做好以下准备:
Cloud 项目的 Owner 必须启用 App Engine。
确保您的用户帐号具备所需的权限。
确保成功部署
如果您启用新版运行状况检查,但应用未达到正常运行状态,则系统将回滚部署。
在将第一个应用部署到柔性环境时,可能会出现延迟,原因是需要设置虚拟机 (VM) 和其他基础架构。初始设置后,运行状况检查会确保您的实例运行正常并已准备好接收流量。如果您的应用未在 app.yaml 文件 liveness_check
部分中的 initial_delay_sec
字段所示的指定时间内达到就绪状态,则您的部署将失败并回滚。
您的应用可能需要更长时间才能达到就绪状态。例如,您可能通过下载大型文件或预加载缓存来初始化您的应用。如果您使用的是新版运行状况检查,则可以通过修改 app.yaml
文件的 readiness_check
部分中的 app_start_timeout_sec
配置设置来延长准备时间。
如果部署失败,请确保 Cloud Build API 已在项目中启用。App Engine 会在您首次部署应用时自动启用此 API,但如果有人停用了 API,则部署将失败。
部署服务
通过部署应用服务的各个版本及其每个配置文件,将应用部署到 App Engine。
要部署应用服务的某个版本,请从服务的 app.yaml
文件所在的目录运行以下命令:
gcloud app deploy
如果使用该命令时不指定文件,则仅部署当前目录中的 app.yaml
文件。默认情况下,deploy
命令会为您所部署的版本生成一个唯一 ID,将该版本部署到 Cloud 项目(您已将 gcloud
工具配置为使用该项目),并将所有流量路由到新版本。
通过指定目标文件或添加其他参数,您可以更改此命令的默认行为:
如需部署服务的其他配置文件,您必须单独指定并部署每个文件。例如:
gcloud app deploy cron.yaml gcloud app deploy dispatch.yaml gcloud app deploy index.yaml
要指定自定义版本 ID,请使用
--version
标志。要阻止流量自动路由到新版本,请使用
--no-promote
标志。如需部署到特定 Cloud 项目,请使用
--project
标志。
例如,如需将 app.yaml
定义的服务部署到特定 Cloud 项目,请为该服务分配一个自定义版本 ID,并阻止流量路由到新版本:
gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote
如需详细了解此命令,请查看 gcloud app deploy
参考文档。
部署多项服务
您可以使用相同的部署命令来部署或更新应用中包含的多项服务。
要部署多项服务,您必须单独部署每项服务的 app.yaml
文件。例如:
gcloud app deploy service1/app.yaml
gcloud app deploy service2/app.yaml
您可以在一个部署命令中指定多个文件:
gcloud app deploy service1/app.yaml service2/app.yaml
部署多项服务的要求
您必须先将应用的某个版本部署到
default
服务,然后才能创建和部署后续服务。您必须在每项服务对应的
app.yaml
配置文件中指定服务的 ID。要指定服务 ID,请在每个配置文件中添加service
元素定义。如果没有在配置文件中添加此元素定义,则该版本默认部署到default
服务。
忽略文件
您可以使用 .gcloudignore
文件指定在部署服务时不要上传到 Google Cloud 的文件和目录。如果要忽略不需要随部署上传的构建工件和其他文件,该文件非常实用。
如需详细了解 .gcloudignore
文件的语法,请参阅 gcloud
参考文档。
手动构建容器以进行部署
如需在 Google Cloud Platform 之外构建容器映像,您必须先将映像上传到容器映像存储区中,然后才能使用 gcloud app deploy
命令将映像部署到 App Engine。
例如,如果您使用 Docker 在本地构建容器映像,可以将这些映像推送到 Google Container Registry,然后在命令的 --image-url
标志中指定映像的网址:
gcloud app deploy --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGE
使用自动连续部署流水线
您可以使用 Cloud Build 在连续部署流水线中自动执行部署。如需了解详情,请参阅 Cloud Build 文档中的部署工件和使用构建触发器自动构建。
PHP 版 Docker 基础映像
如果您想从头开始构建 PHP 自定义运行时应用,请使用 Dockerfile 中提供的基础映像:
版本 | Docker 命令 |
---|---|
PHP 5.6 | FROM gcr.io/google-appengine/php56 |
PHP 7.0 | FROM gcr.io/google-appengine/php70 |
PHP 7.1 | FROM gcr.io/google-appengine/php71 |
PHP 7.2 | FROM gcr.io/google-appengine/php72 |
PHP 7.3 | FROM gcr.io/google-appengine/php73 |
如需查看基础映像的源代码,请访问:https://github.com/GoogleCloudPlatform/php-docker
查看应用
将应用部署到 App Engine 之后,您可以运行以下命令来启动浏览器,然后访问 https://PROJECT_ID.REGION_ID.r.appspot.com
来查看该应用:
gcloud app browse
在 App Engine 上执行测试
在配置新版本以接收流量之前,您可以在 App Engine 上测试新版本。例如,如需测试 default
服务的新版本,请执行以下操作:
部署新版本并包含
--no-promote
标志:gcloud app deploy --no-promote
转到以下网址以访问新版本:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
现在,您可以在 App Engine 运行时环境中测试新版本。如需对应用进行调试,您可以在 Google Cloud Console 的日志查看器中查看其日志。如需了解详情,请参阅写入应用日志。
发送到
https://PROJECT_ID.REGION_ID.r.appspot.com
的请求仍将路由到先前配置为接收流量的版本。如需将流量发送到新版本,请使用 Cloud Console 迁移流量:
选择刚部署的版本,然后点击迁移流量。
如需使用相同的流程来测试其他服务的新版本,您可以将网址中的 default
替换要测试的服务的名称:
问题排查
下面是部署应用时您可能遇到的常见错误消息:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- 如果 Cloud 项目不包含所需的 App Engine 应用,则
gcloud app deploy
命令在尝试运行gcloud app create
命令时可能会失败。只有拥有 Owner 角色的帐号才具备创建 App Engine 应用所需的权限。 502 Bad Gateway
- 如果
app.yaml
配置错误,则 Cloud 项目无法启动。检查应用日志,了解更详细的错误消息。