【GCP】最近気になっているGCPのGoogle Cloud Runを触ってみます
はじめに
こんにちは、がんがんです。
2月の初め頃からFirebaseを触っております。FirebaseやGCPを調べていくなかでCloud RunとCloud Buildにとても興味を持ちました。
今回はCloud Runについて触ってみようと思います。公式ドキュメントの分からないところを付け足しながら試してみます。
目次
目的
- Cloud Runについて触ってみる
- デプロイと実行までの手順を試してみる
プロジェクトの準備
まずはプロジェクトの選択・APIの有効を行っていきます。
今回はCloud Shellを使用していますので、SDKのインストールなどは初期終了済みでした。Updateとかは念のために実行しました。
サンプルアプリ・ファイルの準備
公式ドキュメントを参考にサンプルアプリを作成していきます。
今回はPythonのflask appを使用します(どれを使用してもあまり関係なさそうではある)。
Pythonファイル
helloworld-python/app.py |
import os from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): target = os.environ.get('TARGET', 'World') return 'Hello {}!\n'.format(target) if __name__ == "__main__": app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT', 8080)))
Dockerfile
helloworld-python/app.py |
FROM python:3.7 ENV APP_HOME /app WORKDIR $APP_HOME COPY . . RUN pip install Flask gunicorn CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app
Cloud Buildでコンテナイメージをビルドし、デプロイする
Cloud Buildにてコンテナイメージをビルドして、Cloud Runにデプロイしていきます。
# プロジェクトのIDを確認 $ gcloud config get-value project # Cloud Buildにてコンテナイメージのビルド $ gcloud builds submit --tag gcr.io/[PROJECT-ID]/helloworld
Cloud Buildの方へ移動するときちんとビルド履歴が残っていることと思います。
下記コマンドでCloud Runにデプロイをしていきます。
# Cloud Runにデプロイする $ gcloud beta run deploy --image gcr.io/[PROJECT-ID]/helloworld Please choose a target platform: [1] Cloud Run (fully managed) [2] Cloud Run for Anthos deployed on Google Cloud [3] Cloud Run for Anthos deployed on VMware [4] cancel Please enter your numeric choice: <選択> To specify the platform yourself, pass `--platform managed`. Or, to make this the default target platform, run `gcloud config set run/platform managed`. Please specify a region: [1] asia-east1 [2] asia-northeast1 [3] europe-north1 [4] europe-west1 [5] europe-west4 [6] us-central1 [7] us-east1 [8] us-east4 [9] us-west1 [10] cancel Please enter your numeric choice: <選択:今回は7を選択> To make this the default region, run `gcloud config set run/region us-east1`. Service name (helloworld): <入力する> Allow unauthenticated invocations to [<サービス名>] (y/N)?
しばらく待っているとURLが表示されます。それまで待機しておきます。
実行結果
実行結果は以下の通りです。結果自体はよくあるHello Worldなのであまり面白みはないですね。
おわりに
今回はCloud Runのドキュメントを試していきました。普段使っているDocker環境をそのまま使用できる点は非常に簡単だなと思いました。
次回は今回さらっと触ったCloud Buildについてドキュメントを参考にしながらトライしていこうと思います。