快速入门:构建 Java Spring Boot Web 应用并将其部署到 Cloud Run
��解如何借助 Cloud Run,通过代码示例使用单个命令构建“Hello World”Web 应用并将其部署到 Google Cloud。
按照本快速入门中的步骤操作时,Cloud Run 会在您从源代码进行部署时自动为您构建 Dockerfile。
准备工作
-
Install the Google Cloud CLI.
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。
-
Verify that billing is enabled for your Google Cloud project.
- 要为 Cloud Run 服务设置���认项目,请使用以下命令:
将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。gcloud config set project PROJECT_ID
-
Enable the Cloud Run Admin API and Cloud Build APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable run.googleapis.com
cloudbuild.googleapis.com 启用 Cloud Run Admin API 后,系统会自动创建 Compute Engine 默认服务账号。
- 查看 Cloud Run 价格或使用价格计算器估算费用。
- 项目的 Cloud Run Source Developer (
roles/run.sourceDeveloper) 角色 -
服务身份的 Service Account User (
roles/iam.serviceAccountUser) 角色 -
项目的 Logs Viewer (
roles/logging.viewer) 角色 在控制台中,使用
curl和unzip命令新建一个空 Web 项目:curl https://start.spring.io/starter.zip \ -d type=maven-project \ -d dependencies=web \ -d javaVersion=21 \ -d name=helloworld \ -d artifactId=helloworld \ -d baseDir=helloworld \ -o helloworld.zip unzip helloworld.zip cd helloworld上述命令将创建一个 Spring Boot 项目。
如需在 Microsoft Windows 上使用此 curl 命令,您需要以下命令行之一,或者选择使用 Spring Initializr(预加载配置)生成项目:
如需更新
src/main/java/com/example/helloworld/HelloworldApplication.java中的HelloworldApplication类,请添加@RestController以处理/映射,同时添加@Value字段以提供 NAME 环境变量:将服务器端口设置成由
src/main/resources/application.properties中的 PORT 环境变量定义:此代码会创建一个基本 Web 服务器,以侦听由
PORT环境变量定义的端口。在应用根目录中创建一个
project.toml文件以指定 Java 版本:[[build.env]] name = "GOOGLE_RUNTIME_VERSION" value = "21"在包含
pom.xml文件的目录中,使用以下命令部署应用:gcloud run deploy --source .
当系统提示您输入服务名称时,请按 Enter 键接受默认名称,例如
helloworld。如果系统提示您对项目启用其他 API(例如 Artifact Registry API),请按
y进行响应。当系统提示您输入区域时:请选择您选择的区域,例如
europe-west1。如果系统提示您在指定区域中创建仓库,请按
y进行响应。如果系统提示您允许公开访问,请回复
y。如果有网域限制组织政策阻止此提示,您可能不会看到此提示;如需了解详情,请参阅准备工作部分。
然后等待部署完成。成功完成时,命令行会显示服务网址。
在 Web 浏览器中打开该服务网址,访问部署的服务。
asia-east1(台湾)asia-northeast1(东京)asia-northeast2(大阪)asia-south1(印度孟买)europe-north1(芬兰)二氧化碳排放量低
europe-north2(斯德哥尔摩)二氧化碳排放量低
europe-southwest1(马德里)二氧化碳排放量低
europe-west1(比利时)二氧化碳排放量低
europe-west4(荷兰)二氧化碳排放量低
europe-west8(米兰)europe-west9(巴黎)二氧化碳排放量低
me-west1(特拉维夫)northamerica-south1(墨西哥)us-central1(爱荷华)二氧化碳排放量低
us-east1(南卡罗来纳)us-east4(北弗吉尼亚)us-east5(哥伦布)us-south1(达拉斯)二氧化碳排放量低
us-west1(俄勒冈)二氧化碳排放量低
africa-south1(约翰内斯堡)asia-east2(香港)asia-northeast3(韩国首尔)asia-southeast1(新加坡)asia-southeast2(雅加达)asia-south2(印度德里)australia-southeast1(悉尼)australia-southeast2(墨尔本)europe-central2(波兰,华沙)europe-west10(柏林)europe-west12(都灵)europe-west2(英国伦敦)二氧化碳排放量低
europe-west3(德国法兰克福)europe-west6(瑞士苏黎世)二氧化碳排放量低
me-central1(多哈)me-central2(达曼)northamerica-northeast1(蒙特利尔)二氧化碳排放量低
northamerica-northeast2(多伦多)二氧化碳排放量低
southamerica-east1(巴西圣保罗)二氧化碳排放量低
southamerica-west1(智利圣地亚哥)二氧化碳排放量低
us-west2(洛杉矶)us-west3(盐湖城)us-west4(拉斯维加斯)在 Google Cloud 控制台中,前往 Cloud Run 服务页面:
在服务列表中找到要删除的服务,然后点击该服务对应的复选框以将其选中。
点击删除。这将删除服务的所有修订版本。
- SERVICE:服务的名称。
- REGION:服务的 Google Cloud 区域。
所需的角色
如需获得完成本教程所需的权限,请让您的管理员为您授予以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
授予 Cloud Build 服务账号对项目的访问权限
除非您替换此行为,否则 Cloud Build 会自动使用 Compute Engine 默认服务账号作为默认 Cloud Build 服务账号来构建源代码和 Cloud Run 资源。
为了让 Cloud Build 能够构建来源,请向 Cloud Build 服务账号授予项目的 Cloud Run Builder (roles/run.builder) 角色:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \ --role=roles/run.builder
将 PROJECT_ID 替换为您的 Google Cloud项目 ID,并将 SERVICE_ACCOUNT_EMAIL_ADDRESS 替换为 Cloud Build 服务账号的邮箱。如果您使用 Compute Engine 默认服务账号作为 Cloud Build 服务账号,则服务账号邮箱应采用以下格式:
PROJECT_NUMBER-compute@
将 PROJECT_NUMBER 替换为您的 Google Cloud项目编号。
如需详细了解如何查找项目 ID 和项目编号,请参阅创建和管理项目。
授予 Cloud Run Builder 角色之后,需要几分钟时间才能完成传播。
编写示例应用
如需使用 Java 编写应用,请执行以下操作:
创建一个 Spring Boot 应用。
您的应用已编写完毕,可以进行部署。
从源代码部署到 Cloud Run
从源代码部署会自动从源代码构建容器映像并进行部署。
如需从源代码部署,请执行以下操作:
Cloud Run 位置
Cloud Run 是区域级的,这意味着运行 Cloud Run 服务的基础架构位于特定区域,并且由 Google 代管,以便在该区域内的所有可用区以冗余方式提供。
选择用于运行 Cloud Run 服务的区域时,主要考虑该区域能否满足您的延迟时间、可用性或耐用性要求。通常,您可以选择距离用户最近的区域,但除此之外,您还应该考虑 Cloud Run 服务使用的其他 Google Cloud产品的位置。跨多个位置使用 Google Cloud 产品可能会影响服务的延迟时间和费用。
Cloud Run 可在以下区域使用:
基于层级 1 价格
基于层级 2 价格
如果您已创建 Cloud Run 服务,可在Google Cloud 控制台的 Cloud Run 信息中心内查看区域。
清理
为避免您的 Google Cloud 账号产生额外费用,请删除���在本快速入门中部署的所有资源。
删除仓库
当部署的服务未在使用时,Cloud Run 不会向您收取费用。不过,您可能仍需要支付将容器映像存储在 Artifact Registry 中而产生的相关费用。如需删除 Artifact Registry 仓库,请按照 Artifact Registry 文档中删除仓库的步骤操作。
删除服务
Cloud Run 服务在收到请求之前不会产生费用。如需删除 Cloud Run 服务,请按照以下步骤之一操作:
控制台
要删除服务,请执行以下操作:
gcloud
要删除作业,请运行以下命令:
gcloud run services delete SERVICE --region REGION
替换以下内容:
删除测试项目
删除 Google Cloud 项目后,系统即会停止对该项目中的所有资源计费。如需释放项目中的所有 Google Cloud 资源,请按照以下步骤操作:
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
后续步骤
如需详细了解如何使用代码源构建容器并推送到仓库,请参阅: