Cloud run へデプロイする

Google Cloud Platformの1サービスであるCloud Runを使用してJavaアプリケーションをデプロイします。
手順についてはこちらを参考にしていますので、興味のある方は参照してください。

0. 事前準備

こちらを参考に、Cloud SDKをインストールします。

1. プロジェクトの作成

GCPのコンソールに移動してプロジェクトを作成します。
プロジェクト名は任意ですが、とりあえず「example java project deploy」とでもしておきましょう。

f:id:sho03:20210429130527p:plain

2. サンプルアプリケーションの作成

実際にデプロイするサンプルアプリケーションを作成します。
こちらも手順通りに、適当なディレクトリにSpringアプリケーションを構築しましょう。

curl https://start.spring.io/starter.zip \
    -d dependencies=web \
    -d javaVersion=1.8 \
    -d bootVersion=2.3.3.RELEASE \
    -d name=helloworld \
    -d artifactId=helloworld \
    -d baseDir=helloworld \
    -o helloworld.zip
unzip helloworld.zip
cd helloworld

次に、作成されたアプリケーションがリクエストを処理することができるようにします。HellloworldApplication.javaを修正します。

3. アプリのコンテナ化

Dockerfile.dockerignoreファイルを作成します。 ファイルの内容についてはこちらをご確認ください。

4. Container Registryへのアップロード

Container RegistryはGCPのサービスの1つで、コンテナを登録することができます。
のちに実施するCloud RunへのデプロイはContainer Registryに登録されているコンテナをデプロイする、ということになります。

それでは、以下のコマンドを実行します。この時、Dockerfileが存在しているディレクトリでコマンド実行することに注意してください。

gcloud builds submit --tag gcr.io/{PROJECT-ID}/helloworld

{PROJECT_ID}には手順で作成したプロジェクトのIDを入れてください。 完全なコマンドは以下のようになります。

gcloud builds submit --tag gcr.io/example-java-project-deploy/helloworld

さて、ここまでできるとコンソール上から実際にContainer Registryへコンテナが登録されているはずですので確認してみます。

f:id:sho03:20210429133509p:plain

できました!!

5. Cloud Runへのデプロイ

さて、ここまでできればあとはデプロイするだけですね。
以下のコマンドを実行します。

gcloud run deploy --image gcr.io/example-java-project-deploy/helloworld --platform managed

コマンドを実行すると、実行中に

  1. サービス名
  2. リージョン
  3. 未認証の呼び出し許可

について入力を求められますので適宜入力してください。

実行が完了するとアクセスするためのURLがターミナルに表示されますので、ブラウザで開くと画面にHelloWorld!が表示されます。

6. 補足

デプロイしたアプリケーションにアクセスがある場合など、課金が発生しますので、不要であればプロジェクトごと削除してしまってください。

終わりに

手順通りに実施すればなんてことはなく簡単にできました。
コンテナ技術もクラウドサービス技術も知識がほぼないのでこれから学習していければと思います。

とりあえずDockerあたり勉強するかなー。