区域 ID
REGION_ID
是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r
包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。
详细了解区域 ID。
了解如何在本地运行您的应用,以及如何在 App Engine 上部署和测试应用。
在本地运行
如需在部署之前测试应用的功能,请用您经常使用的开发工具在本地环境中运行应用。
部署应用的准备工作
在部署应用之前,请做好以下准备:
- Cloud 项目的 Owner 必须启用 App Engine。
- 确保您的用户帐号具备所需的权限。
部署应用
您可以使用以下任一方法来部署应用:使用 Google Cloud CLI 部署应用的源代码和 Maven POM 或 Gradle 构建文件。Cloud Build 将构建您的应用并将其部署到 App Engine。
使用适用于 Maven 或 Gradle 的 App Engine 插件,该插件会在本地构建您的应用,并将构建的应用部署到 App Engine。
使用任何构建框架在本地构建 Fat JAR(可执行 JAR 文件),然后使用 Google Cloud CLI 将 JAR 部署到 App Engine。
如需以编程方式部署应用,请使用 Admin API。
部署应用的源代码
如果您使用 Maven 或 Gradle 来管理应用的本地构建,并且应用的所有依赖项都可以公开下载,那么您可以从应用的 pom.xml
或 build.gradle
文件所在的目录输入 gcloud app deploy
命令:
gcloud app deploy
该命令指示 Cloud Build 使用 App Engine Buildpack 构建应用并将其部署到 App Engine。
如果您使用 Maven,则相应的情况如下:
Buildpack 使用以下构建命令:
mvn clean package --batch-mode -DskipTests
如果应用的根目录包含
mvnw
文件,则构建命令会使用./mvnw
替换mvn
。然后,Cloud Build 在target
目录中查找包含主类清单条目的.jar
文件,并创建一个值为java -jar <jarfile>
的entrypoint
。
如果您使用 Gradle,则相应的情况如下:
Buildpack 使用以下构建命令:
gradle clean assemble -x test --build-cache
如果应用的根目录包含
gradlew
文件,则构建命令会使用./gradlew
替换gradle
。然后,Cloud Build 在build/libs
目录中查找包含主类清单条目的.jar
文件,并创建一个值为java -jar <jarfile>
的entrypoint
。请确保您的项目的根目录中没有
pom.xml
。Maven 项目优先于 Gradle 项目。
查看构建日志
Cloud Build 会流式传输构建日志和部署日志,您可以在 Google Cloud 控制台的 Cloud Build 历史记录部分查看这些日志。要查看应用所在区域中的构建,请使用页面顶部的区域下拉菜单选择要作为过滤条件的区域。
关于此部署方法,请注意以下事项:
如果应用具有仅在本地可用的依赖项,则 Cloud Build 无法构建应用,并且部署将失败。在这种情况下,我们建议您改用 App Engine Maven 或 Gradle 插件。
构建应用时会用到 Cloud Build 配额,而存储应用的源代码时则会用到 Cloud Storage 配额。Cloud Build 和 Cloud Storage 提供免费配额,只要您的用量未超出免费配额,部署 App Engine 应用就不会产生费用。如需了解详情,请参阅价格。
目前,您无法为 Gradle 构建命令指定其他参数。如需了解详情,请参阅 Google 问题跟踪器。
使用 App Engine Maven 或 Gradle 插件
App Engine 提供了 Maven 和 Gradle 插件,可用于构建和部署应用。例如,设置 App Engine Maven 插件后,您可以从项目的 pom.xml
文件所在的目录输入以下命令:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
将 PROJECT_ID 替换为您的 Cloud 项目 ID。如果您的 pom.xml
文件已经指定了您的项目 ID,则您无需在运行的命令中添加 -Dapp.deploy.projectId
属性。
如需了解详情,请参阅使用 Apache Maven 和 App Engine 插件或使用 Gradle 和 App Engine 插件。
部署可执行 JAR 文件
使用任何构建框架在本地构建可执行 JAR 文件,然后根据您是否为应用创建 app.yaml
文件,执行以下某项操作:
如果您创建了
app.yaml
文件:将该文件复制到您创建的可执行 JAR 文件所在的目录中。
从包含
app.yaml
和 JAR 的目录中,输入以下命令:gcloud app deploy
如果您尚未创建
app.yaml
文件,请输入以下命令:gcloud app deploy your-executable.jar
gcloud app deploy
将使用所有默认值创建一个包含最低设置的app.yaml
文件。
忽略文件
您可以使用 .gcloudignore
文件指定在部署服务时不会上传到 App Engine 的文件和目录。如果要忽略构建工件和其他无需随部署上传的文件,这种做法会非常实用。
管理构建映像
您每次部署新版本时,系统都会使用 Cloud Build 服务创建一个容器映像。该容器映像是在应用的区域中构建的,然后在 App Engine 标准环境中运行。
构建的容器映像存储在 Container Registry 的 app-engine-tmp/app
文件夹中。您可以下载这些映像,以便在其他位置存储或运行。部署完成后,App Engine 便不再需要容器映像。请注意,容器映像不会自动删除,因此为了避免达到存储空间配额,您可以安全地删除不再需要的任何映像。如需详细了解如何在 Container Registry 中管理映像,请参阅 Container Registry 文档。
查看应用
将应用部署到 App Engine 之后,您可以运行以下命令来启动浏览器,然后访问 https://PROJECT_ID.REGION_ID.r.appspot.com
来查看该应用:
gcloud app browse
在迁移流量之前在 App Engine 上进行测试
在配置新版本以接收流量之前,您可以在 App Engine 上测试新版本。例如,如需测试 default
服务的新版本,请执行以下操作:
部署新版本,但阻止流量自动路由到新版本:
mvn appengine:deploy -Dapp.deploy.projectId=PROJECT_ID -Dapp.deploy.promote=False
转到以下网址以访问新版本:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
现在,您可以在 App Engine 运行时环境中测试新版本。您可以通过查看应用日志来调试应用。如需了解详情,请参阅写入应用日志。
App Engine 将发送到
https://PROJECT_ID.REGION_ID.r.appspot.com
的请求路由到先前配置为接收流量的版本。如需将流量发送到新版本,请使用 Google Cloud 控制台迁移流量:
选择刚部署的版本,然后点击迁移流量。
如需使用相同流程来测试其他服务的新版本,您可以将网址中的 default
替换为要测试的服务的名称:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
如需详细了解如何定位特定服务和版本,请参阅请求的路由方式。
使用构建环境变量
您还可以为支持 buildpack 的运行时设置构建环境变量。
构建环境变量是与应用一起部署的键值对,让您可将配置信息传递给 buildpack。例如,您可能需要自定义编译器选项。您可以通过在 app.yaml
文件中配置 build_env_variables
字段来添加或移除这些构建环境变量。
使用 Cloud Debugger
您可以使用 Debugger 在任何代码位置检查已部署应用的状态,而无需停止应用或降低运行中应用的运行速度。
如需将 Debugger 与 Java 11 应用一起使用,需要在 app.yaml
文件的 entrypoint
字段中包含以下标志:
-agentpath:/opt/cdbg/cdbg_java_agent.so=--log_dir=/var/log
如果您已在 app.yaml
文件中指定 entrypoint
,请在 entrypoint
字段中将 agentpath 标志添加到 java
命令。
如果您尚未指定 entrypoint
字段,或者在部署应用时生成 app.yaml
文件,App Engine 会将该标志添加到用于启动应用的命令。
使用 Cloud Profiler
Cloud Profiler 是一个低开销的统计性能剖析器,可从生产应用中持续收集有关 CPU 使用情况和内存分配情况的信息。它会将这些信息归因于您应用的源代码,帮助您识别应用消耗最多资源的部分,并说明代码的性能特征。
如需使用 Cloud Profiler,请按照启动程序中的说明设置应用的配置文件,然后重新部署应用。