1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google がサポートする Java ランタイムと作成済み SpringBoot の jar を使用して Cloud Run にアプリケーションをデプロイする方法

Last updated at Posted at 2024-11-06

gradle bootjar で作成済みの jar を使って、コンテナイメージの作成からサービスのデプロイまでを gcloud run deploy で行う方法についてまとめます。

Dockerfile を使って Docker Hub からイメージを呼び込むと Google のサポート外のランタイム環境になってしまうのは Google のサポートを受けられるように Python アプリをデプロイする方法で書いたことと同様です。

前提条件

SpringBoot の jar ファイル作成済みであること
※この記事では gradle bootjar コマンドを使用して jar を出力しています。

1 デプロイ用のワークディレクトリを作成

mkdir deploy
cd deploy

2 jar ファイルを配置

cp などで deploy 配下に持ってくる。

3 ビルダーと Java のランタイムの固定

同階層に project.toml を作成し、以下を記述。Java17 環境を例としています。

[build]
builder = "gcr.io/buildpacks/builder:google-22"

[[build.env]]
name = "GOOGLE_RUNTIME_VERSION"
value = "17"

Google のビルダーは指定しないと常に latest が使用されます。latest の指し示すビルダーが古い Java のバージョンをサポートしなくなるとデプロイできなくなる可能性があるため、ここでは固定しています。

4 ソースからのデプロイを実行

ここまでで deploy 配下が以下のようになっている

/xxx.jar (SpringBoot の jar ファイル)
/project.toml

ソースからデプロイを実行する
・application.yaml に SpringBoot の起動環境プロファイルを持っている場合、--set-env-vars で SPRING_PROFILES_ACTIVE の環境変数を与えることでプロファイルの切り替えが行えます。
・JavaVM の引数を追加する場合、同様に --set-env-vars で JAVA_TOOL_OPTIONS に設定します。リファレンス

gcloud run deploy [サービス名] \\
--source . 
--set-env-vars SPRING_PROFILES_ACTIVE="production",JAVA_TOOL_OPTIONS="-XX:MaxRAM=256m -XX:+PrintNMTStatistics"

他のオプションについてはリファレンス を参考に

Artifact Registory に置かれるイメージと Run のサービスをタグで紐づけすると管理しやすくなります。
タグの付け方

参考

ランタイムサポート期限
https://cloud.google.com/run/docs/runtime-support?hl=ja

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?