【Kotlin + GCP】Cloud RunにKotlin + Spring Bootアプリをデプロイしてみる

はじめに

こんにちは、がんがんです。
以前、Kotlin + Spring Boot + Maven on Dockerの実験に関する備忘録を書いたかと思います。
gangannikki.hatenadiary.jp


上記記事の最後でも記述している通り、実際にGCPで実行するまでをゴールとしています。
今回の記事ではGoogle Cloud Runにデプロイするまでの備忘録を書いていこうと思います。

参考

公式ドキュメント

Container Registryのドキュメント
cloud.google.com

参考記事

全体的には下記の記事が参考になりやすい
qiita.com

環境

今回はGoogle Cloud Console上で行っています。

STEP0:Cloud ConsoleにてKotlinアプリをビルドする

今回はCloud Consoleですべての実験を進めていきます。今回の実験では、前回作成したKotlin + Spring Bootアプリを使用します。

$  git clone Kotlin-Springアプリ
$  docker build --no-cache -t kotlin-spring-demo .


ビルド時にmavenの方でPermission Errorが起きました。こちらは下記で対応しました。

git update-index --add --chmod=+x demo/mvnw

STEP1:Container Registryにアップロードする

ビルドが完了したイメージをCloud ConsoleよりGCRへpushしていきます。
ローカルからpushする場合はContainer Registryに関する認証方法を確認してください。

#  プロジェクトIDを確認
$  gcloud config get-value project
$  docker tag kotlin-spring-demo gcr.io/<PROJECT_ID>/kotlin-spring-demo
$  docker push gcr.io/<PROJECT_ID>/kotlin-spring-demo


Container Registryにアクセスするとアップロード出来ていることが確認できるかと思います。
f:id:gangannikki:20201010044418j:plain

STEP2:Cloud Runへデプロイする

GCRへのpushが確認出来たら、Cloud Runへとデプロイしていきます。デプロイに関しては公式ドキュメントが参考になります。

$  gcloud run deploy --image gcr.io/<PROJECT_ID>/kotlin-spring-demo --platform managed --region us-central1

サービス名はそのままEnterキー、[未認証の呼び出しを許可]はそのままyをそれぞれ設定しています(すべてオプション設定した方が正直楽です)。

実行結果

実際にCloud Runのデプロイ先にアクセスしてみます。

f:id:gangannikki:20201010044635j:plain
/にアクセスするとエラーになります


/helloに接続しないと怒られてしまいますね。こちらはコントローラがないことによるSpring Bootによるエラーでした。
/helloを入力するときちんと表示されます。

f:id:gangannikki:20201010044632j:plain
コントローラを作っている/helloにアクセスした場合

おわりに

今回は以前作成したKotlin + Spring Boot + MavenアプリをCloud Runにデプロイしていきました。
意外と簡単にアップロード出来ることが確認出来てよかったです。


時間があればこちらの記事でまとめたRails APIの環境もCloud Runにデプロイしてみようかと思います。