Artifact Registry からの Cloud Run へデプロイ
この記事では、簡単な Python の Web アプリケーションを作成し、Cloud Run を利用してデプロイする手順を、Google Cloud CLI (gcloud) を中心にご紹介します。わずか数ステップで、アプリケーションを公開できます。
1.はじめに:必要なファイル構成の作成
まずは、デプロイ対象となる Python アプリケーションのコードと依存関係を定義します。
構成
.
├── app
└── main.py
└── requirements.txt
main.py の作成
Flask という軽量なWebフレームワークを使用し、「Hello, World!」と返すシンプルなアプリケーションを作成します。
from flask import Flask
# Flask アプリケーションのインスタンスを作成
app = Flask(__name__)
# ルート('/')へのアクセスに対して実行される関数を定義
@app.route('/')
def hello():
# レスポンスとして文字列を返す
return 'Hello, World!'
# アプリケーションを起動
if __name__ == '__main__':
app.run()
requirements.txt の作成
このアプリケーションが必要とするライブラリを定義します。
flask
2. 環境変数の設定
デプロイプロセスで使用する Google Cloud (GCP) のプロジェクトIDやリージョンなどの情報を環境変数として設定します。これにより、コマンドの可読性が向上し、入力ミスを防げます。
# ご自身の GCP プロジェクト ID を設定してください
export PROJECT_ID='[YOUR PROJECT ID]'
# デプロイ先のリージョン (例: 東京)
export REGION='asia-northeast1'
# Artifact Registry のリポジトリ名
export REPOSITORY='quickstart-repos'
# ビルドする Docker イメージの名前
export IMAGE='helloworld_image'
# Cloud Run 上で作成されるサービス名
export SERVICE='helloworld'
# イメージのタグ (バージョン管理に使うことが多い)
export TAG='latest'
3. Docker イメージのビルドと Artifact Registry への登録
Cloud Run にデプロイするためには、アプリケーションを Docker コンテナイメージとしてパッケージングし、GCP のコンテナレジストリである Artifact Registry に保存する必要があります。
3-1. Artifact Registry リポジトリの作成
ビルドしたイメージを保存するためのリポジトリを作成します。
gcloud artifacts repositories create ${REPOSITORY} \
--repository-format=docker \
--location=${REGION} \
--project=${PROJECT_ID}
3-2. Cloud Buildでのビルドとプッシュ
Cloud Build を使用して、コード(appディレクトリ内)から Docker イメージを自動で作成し、 Artifact Registry にプッシュします。ここでは、main.py と requirements.txt が存在するため、ビルドパック(Buildpacks)機能を利用して Dockerfile を記述せずにビルドを行います。
# --pack オプションが Buildpacks を利用し、自動でコンテナイメージを作成します。
gcloud builds submit \
--pack image=${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE}:${TAG}
Buildpacks とは?: アプリケーションの言語やフレームワークを自動で検出し、必要なランタイムや設定を加えてコンテナイメージを作成してくれるツールです。これにより、手動で Dockerfile を書く手間が省けます。
4. Cloud Runへのデプロイ
作成したコンテナイメージを、Cloud Run にデプロイします。
gcloud run deploy ${SERVICE} \
--image ${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE}:${TAG} \
--platform=managed \
--region=${REGION} \
--no-invoker-iam-check \
--allow-unauthenticated
5. デプロイの確認とアクセス
デプロイが完了すると、サービス URL がコンソールに出力されます。
✓ Deploying new service... Done.
✓ Creating Revision...
✓ Routing traffic...
Done.
Service [helloworld] revision [helloworld-00001-g9z] has been deployed and is serving 100 percent of traffic.
Service URL: https://helloworld-xxxxx.asia-northeast1.run.app
出力された Service URL にブラウザでアクセスしてみましょう。
**「Hello, World!」**という文字が表示されれば、デプロイは成功です!
結論 : デプロイは簡単!
コードを準備し、ビルド(コンテナ化)し、デプロイする、という流れを gcloud コマンドだけで完結できました。Cloud Run にデプロイするのは非常に簡単でしたね。
Discussion