Traffine I/O

日本語

2023-08-04

StreamlitをCloud Runにデプロイ

StreamlitをCloud Runにデプロイ

この記事では、StreamlitをCloud Runにデプロイする方法を紹介します。

ソースコードは以下のレポジトリから確認することができます。

https://github.com/ryuseikakujo/streamlit-cloud-run/tree/main

ソースコードのクローン

以下のコマンドでソースコードをクローンします。

bash
$ git clone https://github.com/ryuseikakujo/streamlit-cloud-run.git

セットアップ

以下の手順でセットアップを行います。

  1. Terraformのバックエンドを作成
  2. インフラのリソースをTerraformで作成
  3. GitHub ActionsのSecretsの設定

Terraformのバックエンドを作成

Terraformのステートを管理するためにGCSにバケットを作成します。GCPのコンソールからバケットを作成してください。

インフラのリソースをTerraformで作成

まずはterraform/backend.tfファイルのbucketを変更します。

terraform/backend.tf
  backend "gcs" {
-   bucket = "my-streamlit-tfstate"
+   bucket = "<Your bucket name>"
    prefix = ""
  }

次に、terraform/variables.tfを変更します。

terraform/variables.tf
 variable "project" {
   type    = string
-  default = "my-gcp-proj"
+  default = "<Your GCP project name>"
 }

 variable "repo_org_name" {
   type    = string
-  default = "ryuseikakujo"
+  default = "Your github repository organization name"
 }

 variable "repo_name" {
   type    = string
-  default = "streamlit-cloud-run"
+  default = "Your github repository name"
 }

そして以下のコマンドでTerraformをapplyします。

bash
$ cd terraform
$ terraform init
$ terraform apply

以下のリソースが作成されます。

  • Workload Identityプール
  • Cloud Run用のサービスアカウント
  • GitHub Actions用のサービスアカウント

GitHub ActionsのSecretsの設定

.github/workflows/cd_streamlit.ymlでCloud Runをデプロイする際に渡す環境変数を設定します。以下の変数をGitHubのSecretsに設定します。

  • VAR1
  • VAR2

これで、mainブランチにコミットされると、GitHub Actions経由でGCRにDockerイメージがプッシュされ、Cloud Runがデプロイされるようになります。

参考

https://github.com/ryuseikakujo/streamlit-cloud-run/tree/main

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!