クイックスタート: Java Spring Boot ウェブアプリをビルドして Cloud Run にデプロイする
Cloud Run を使用し、1 つのコマンドでコードサンプルから「Hello World」ウェブ アプリケーションをビルドして Google Cloudにデプロイする方法を学習します。
このクイックスタートの手順に沿って、ソースコードからデプロイすると、Cloud Run によって Dockerfile が自動的にビルドされます。
始める前に
- アカウントにログインします Google Cloud を初めて使用する場合は、 Google Cloud アカウントを作成して、 実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成します。 Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、実際の Google Cloud プロジェクト名に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、 このガイドを完了するために必要な権限があることを 確認します。新しいプロジェクトを作成した場合は、 必要な権限がすでに付与されています。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成します。 Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、実際の Google Cloud プロジェクト名に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、 このガイドを完了するために必要な権限があることを 確認します。新しいプロジェクトを作成した場合は、 必要な権限がすでに付与されています。
- Cloud Run サービスのデフォルト プロジェクトを設定するには:
PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。gcloud config set project PROJECT_ID
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
-
Cloud Run Admin API と Cloud Build API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(
roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを付与する方法をご覧ください。gcloud services enable run.googleapis.com
cloudbuild.googleapis.com Cloud Run Admin API を有効にすると、Compute Engine のデフォルトのサービス アカウントが 自動的に作成されます。
- Cloud Run の料金を確認するか、料金計算ツールで費用を見積もります。
必要なロール
このクイックスタートを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
- プロジェクトに対する Cloud Run 管理者 (
roles/run.admin) - プロジェクトに対する Cloud Run ソース デベロッパー (
roles/run.sourceDeveloper) - サービス ID に対するサービス アカウント ユーザー (
roles/iam.serviceAccountUser) ロール - ログビューア (
roles/logging.viewer)プロジェクトに対する
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Build サービス アカウントにプロジェクトへのアクセス権を付与する
この動作をオーバーライドしない限り、Cloud Build は、ソースコードと Cloud Run リソースのビルドにデフォルトの Cloud Build サービス アカウントとして Compute Engine のデフォルトのサービス アカウントを自動的に使用します。
Cloud Build がソースをビルドできるようにするには、プロジェクトの Cloud Build サービス アカウントに Cloud Run ビルダー(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@developer.gserviceaccount.com
PROJECT_NUMBER は、使用する Google Cloudプロジェクト番号に置き換えます。
プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。
Cloud Run ビルダーのロールを付与すると、反映されるまでに数分かかることがあります。
サンプル アプリケーションを作成する
Java でアプリケーションを作成するには:
Spring Boot アプリケーションを作成します。
コンソールから
curlコマンドとunzipコマンドを使用して、新しい空のウェブ プロジェクトを作成します。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(構成のプリロード)を使用してプロジェクトを生成します。
/マッピングを処理する@RestControllerと、NAME 環境変数を指定する@Valueフィールドを追加して、src/main/java/com/example/helloworld/HelloworldApplication.javaのHelloworldApplicationクラスを更新します。src/main/resources/application.propertiesの PORT 環境変数によって定義されるサーバーポートを設定します。このコードは、
PORT環境変数で定義されたポートをリッスンする基本的なウェブサーバーを作成します。アプリケーションのルート ディレクトリに
project.tomlファイルを作成して、Java バージョンを指定します。[[build.env]] name = "GOOGLE_RUNTIME_VERSION" value = "25"
これでアプリが完成し、デプロイできるようになりました。
の Knative サンプルを確認してください。ソースから Cloud Run にデプロイする
ソースからのデプロイでは、ソースコードからコンテナ イメージが自動的にビルドされて、デプロイされます。
ソースからデプロイするには:
pom.xmlファイルを含むディレクトリで、次のコマンドを使用してアプリをデプロイします。gcloud run deploy --source .
サービス名の入力を求められたら、Enter キーを押して、デフォルトの名前(
helloworldなど)を受け入れます。プロジェクトで追加の API(Artifact Registry API など)を有効にするよう求められたら、
yを押して応答します。リージョンの入力を求められたら、任意のリージョン(
europe-west1など)を選択します。指定したリージョンにリポジトリを作成するように求められたら、
yを押します。公開アクセスを許可するように求められたら、
yを押します。ドメイン制限の組織のポリシーが原因でこのメッセージが表示されない場合があります。詳細については、始める前にのセクションをご覧ください。
デプロイが完了するまで少しお待ちください。成功すると、コマンドラインにサービス URL が表示されます。
このサービス URL をウェブブラウザで開き、デプロイしたコンテナにアクセスします。
Cloud Run のロケーション
Cloud Run はリージョナルです。つまり、Cloud Run サービスを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。
レイテンシ、可用性、耐久性の要件を満たしていることが、Cloud Run サービスを実行するリージョンを選択する際の主な判断材料になります。一般的には、ユーザーに最も近いリージョンを選択できますが、Cloud Run サービスで使用されている他の Google Cloudプロダクトのロケーションも考慮する必要があります。 Google Cloud プロダクトを複数のロケーションで使用すると、サービスのレイテンシだけでなく、コストにも影響を及ぼす可能性があります。
Cloud Run は、次のリージョンで利用できます。
ティア 1 料金を適用
asia-east1(台湾)asia-northeast1(東京)asia-northeast2(大阪)asia-south1(ムンバイ、インド)asia-southeast3(バンコク)europe-north1(フィンランド)低 CO2
europe-north2(ストックホルム)低 CO2
europe-southwest1(マドリッド)低 CO2
europe-west1(ベルギー)低 CO2
europe-west4(オランダ)低 CO2
europe-west8(ミラノ)europe-west9(パリ)低 CO2
me-west1(テルアビブ)northamerica-south1(メキシコ)us-central1(アイオワ)低 CO2
us-east1(サウスカロライナ)us-east4(北バージニア)us-east5(コロンバス)us-south1(ダラス)低 CO2
us-west1(オレゴン)低 CO2
ティア 2 料金を適用
africa-south1(ヨハネスブルグ)asia-east2(香港)asia-northeast3(ソウル、韓国)asia-southeast1(シンガポール)asia-southeast2(ジャカルタ)asia-south2(デリー、インド)australia-southeast1(シドニー)australia-southeast2(メルボルン)europe-central2(ワルシャワ、ポーランド)europe-west10(ベルリン)europe-west12(トリノ)europe-west2(ロンドン、イギリス)低 CO2
europe-west3(フランクフルト、ドイツ)europe-west6(チューリッヒ、スイス)低 CO2
me-central1(ドーハ)me-central2(ダンマーム)northamerica-northeast1(モントリオール)低 CO2
northamerica-northeast2(トロント)低 CO2
southamerica-east1(サンパウロ、ブラジル)低 CO2
southamerica-west1(サンティアゴ、チリ)低 CO2
us-west2(ロサンゼルス)us-west3(ソルトレイクシティ)us-west4(ラスベガス)
Cloud Run サービスをすでに作成している場合は、Google Cloud コンソールの Cloud Run ダッシュボードにリージョンが表示されます。
クリーンアップ
Google Cloud アカウントで追加料金が発生しないようにするには、このクイックスタートでデプロイしたすべてのリソースを削除します。
リポジトリを削除する
デプロイされたサービスが使用されていない場合、Cloud Run の料金は発生しません。ただし、コンテナ イメージを Artifact Registry に保存した場合にも料金が発生する可能性があります。Artifact Registry リポジトリを削除するには、Artifact Registry ドキュメントのリポジトリを削除するの手順を行います。
サービスを削除する
Cloud Run サービスの費用は、リクエストを受け取るまでは発生しません。Cloud Run サービスを削除するには、次のいずれかの操作を行います。
コンソール
サービスを削除するには:
Google Cloud コンソールで、Cloud Run の [サービス] ページに移動します。
削除するサービスをサービスリストで探し、そのチェックボックスをクリックして選択します。
[削除] をクリックします。これにより、サービスのすべてのリビジョンが削除されます。これにより、サービスのすべてのリビジョンが削除されます。
gcloud
サービスを削除するには、次のコマンドを実行します。
gcloud run services delete SERVICE --region REGION
次のように置き換えます。
- SERVICE: サービスの名前。
- REGION: サービスの Google Cloud リージョン。
テスト プロジェクトを削除する
Google Cloud プロジェクトを削除すると、そのプロジェクト内のすべてのリソースに対する課金が停止します。プロジェクト内のすべての Google Cloud リソースを解放する手順は次のとおりです。
プロジェクトを削除します。 Google Cloud
gcloud projects delete PROJECT_ID
次のステップ
コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。