将 Java 服务部署到 Cloud Run
如需在 Cloud Shell Editor 中直接遵循有关此任务的分步指导,请点击操作演示:
准备工作
- 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
- 要为 Cloud Run 服务设置默认项目,请使用以下命令:
gcloud config set project PROJECT_ID
将 PROJECT_ID 替换为您为此快速入门创建的项目的名称。
编写示例应用
如需使用 Java 编写应用,请执行以下操作:
创建一个 Spring Boot 应用。
在 Console 中,使用 cURL 和 unzip 命令新建一个空 Web 项目:
curl https://start.spring.io/starter.zip \ -d type=maven-project \ -d bootVersion=2.7.6 \ -d dependencies=web \ -d javaVersion=11 \ -d name=helloworld \ -d artifactId=helloworld \ -d baseDir=helloworld \ -o helloworld.zip unzip helloworld.zip cd helloworld
上述命令将创建一个 Spring Boot 项目。
如需在 Microscof Windows 上使用上述 cURL 命令,您需要以下命令行之一,或者选择性地使用 Spring Initializr(预加载配置)生成项目:
如需更新
src/main/java/com/example/helloworld/HelloworldApplication.java
中的HelloworldApplication
类,请添加@RestController
以处理/
映射,同时添加@Value
字段以提供 NAME 环境变量:将服务器端口设置成由
application.properties
中的 PORT 环境变量定义:
此代码会创建一个基本 Web 服务器,以侦听由 PORT
环境变量定义的端口。
您的应用已编写完毕,可以进行部署。
从来源部署到 Cloud Run
重要提示:本快速入门假定您在快速入门中使用的项目中拥有所有者或编辑者角色。否则,请参阅 Cloud Run 部署权限、Cloud Build 权限和 Artifact Registry 权限,获取需要的权限。
从源代码部署会自动从源代码构建容器映像并进行部署。
如需从源代码部署,请执行以下操作:
在源代码目录中,使用以下命令从源代码进行部署:
gcloud run deploy
如果系统提示您启用 API,请回复 y 进行启用。
当系统提示您输入源代码位置时,请按 Enter 键部署当前文件夹。
当系统提示您输入服务名称时,请按 Enter 键接受默认名称,例如
helloworld
。如果系统提示您启用 Artifact Registry API 或允许创建 Artifact Registry 代码库,请按
y
进行响应。当系统提示您输入区域时:请选择您选择的区域,例如
us-central1
。系统会提示您允许未通过身份验证的调用:响应
y
。
然后等待部署完成。成功完成时,命令行会显示服务网址。
在 Web 浏览器中打开该服务网址,访问部署的服务。
Cloud Run 位置
Cloud Run 是区域级的,这意味着运行 Cloud Run 服务的基础架构位于特定区域,并且由 Google 代管,以便在该区域内的所有可用区以冗余方式提供。
选择用于运行 Cloud Run 服务的区域时,主要考虑该区域能否满足您的延迟时间、可用性或耐用性要求。通常,您可以选择距离用户最近的区域,但除此之外,您还应该考虑 Cloud Run 服务使用的其他 Google Cloud 产品的位置。跨多个位置使用 Google Cloud 产品可能会影响服务的延迟时间和费用。
Cloud Run 可在以下区域使用:
基于层级 1 价格
asia-east1
(台湾)asia-northeast1
(东京)asia-northeast2
(大阪)europe-north1
(芬兰)二氧化碳排放量低
europe-southwest1
(马德里)二氧化碳排放量低
europe-west1
(比利时)二氧化碳排放量低
europe-west4
(荷兰)europe-west8
(米兰)europe-west9
(巴黎)二氧化碳排放量低
me-west1
(特拉维夫)us-central1
(爱荷华)二氧化碳排放量低
us-east1
(南卡罗来纳)us-east4
(北弗吉尼亚)us-east5
(哥伦布)us-south1
(达拉斯)us-west1
(俄勒冈)二氧化碳排放量低
基于层级 2 价格
asia-east2
(香港)asia-northeast3
(韩国首尔)asia-southeast1
(新加坡)asia-southeast2
(雅加达)asia-south1
(印度孟买)asia-south2
(印度德里)australia-southeast1
(悉尼)australia-southeast2
(墨尔本)europe-central2
(波兰,华沙)europe-west12
(都灵)europe-west2
(英国伦敦)europe-west3
(德国法兰克福)europe-west6
(瑞士苏黎世)二氧化碳排放量低
me-central1
(多哈)northamerica-northeast1
(蒙特利尔)二氧化碳排放量低
northamerica-northeast2
(多伦多)二氧化碳排放量低
southamerica-east1
(巴西圣保罗)二氧化碳排放量低
southamerica-west1
(智利圣地亚哥)us-west2
(洛杉矶)us-west3
(盐湖城)us-west4
(拉斯维加斯)
如果您已创建 Cloud Run 服务,则可以在 Google Cloud 控制台中的 Cloud Run 信息中心内查看区域。
恭喜!您刚刚将源代码从容器映像部署到了 Cloud Run。Cloud Run 会在需要处理收到的请求时自动横向扩容您的容器映像,并在需要处理的请求数量减少时自动横向缩容您的容器映像。您只需为在处理请求期间消耗的 CPU、内存和网络付费。
清理
移除测试项目
虽然 Cloud Run 不会对未在使用中的服务计费,但您可能仍然需要支付将容器映像存储在 Artifact Registry 中而产生的相关费用。为避免产生费用,您可以删除容器映像或删除 Google Cloud 项目。删除 Google Cloud 项目后,系统会停止对该项目中使用的所有资源计费。
- 在 Google Cloud 控制台中,转到管理资源页面:
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
后续步骤
如需详细了解如何使用代码源构建容器并推送到代码库,请参阅: