Zenn
📊

Streamlitで作成したデータアプリをユーザー認証付きの環境へデプロイするチュートリアル

2025/03/25に公開
3

Morphを用いて、Streamlitで作ったデータアプリにユーザー認証をつけてクラウドへデプロイするチュートリアルを解説します。この手法では従来のStreamlitをCloudRunにデプロイする時に必要だったDockerでのビルドも必要なく手軽にチームにアプリを共有することができます。

Morphは、社内向けのデータアプリやAIアプリをGithubリポジトリから自動的にクラウドにデプロイをしてユーザー認証付きで共有をする機能を持ったクラウドサービスです。

今回はStreamlitのデプロイもサポートされたので、Streamlitで開発したアプリのデプロイのチュートリアルを解説します。事前に morph-data.ioにログインをしてください。

https://morph-data.io

TL;DR

本チュートリアルの成果物は以下のリポジトリにも公開しています。

https://github.com/shibatanaoto/streamlit-morph-sample

上記のリポジトリをフォークをして、以下の動画の手順を辿ることでStreamlitのアプリをクラウドにデプロイして招待したメンバーに共有することができます。

https://youtu.be/W4NEHIQqQbg

事前準備

事前準備として以下のパッケージをインストールしてください。

pip install streamlit pandas

Streamlitのアプリを構築する

このチュートリアルでは、デプロイの解説がメインなので以下の簡単なStreamlitアプリを使用します。まず、 main.py という名前のファイルを作成します。(名前は必ずmain.pyから変更しないでください)

import streamlit as st
import pandas as pd
import numpy as np

st.markdown("# Hello world!!!")

df: pd.DataFrame = pd.DataFrame(
    np.random.randn(30, 3),
    columns=["x", "y", "z"]
)
st.line_chart(df)

ローカル環境で作成したアプリを確認します。

streamlit run main.py

Morphにデプロイする設定をする

main.pyと同じ階層に morph_project.yml という名前のファイルを作成してください。ここには、以下のように設定ファイルを記述してください。 runtime についてはお使いのPythonのバージョンに合わせてください。 (Python3.9 ~ 3.12がサポートされています)

version: '1'

build:
  framework: streamlit
  runtime: python3.12

deployment:
  provider: gcp

morph_project.yml の仕様はこちらに記載があります。処理のスペックに合わせてメモリやCPUも設定することができます。

https://docs.morph-data.io/reference/ja/framework/morph-project

ここまで設定ができたら、requirements.txtに依存パッケージを出力してGithubにプッシュしてください。

pip freeze > requirements.txt

Morphへデプロイ

次に https://morph-data.io へログインをして以下のトップページから”+Create”ボタンを押し、Github連携をしてリポジトリを作成してください。リポジトリとブランチを選択することで自動的にデプロイが開始されます。

トップページに作成されたアプリの一覧が表示されているので、リポジトリ名と同じアプリを選択してください。”Deployments”のタブには、ビルド状況が表示されています。”Ready”になればデプロイは完了です。

“Open”ボタンを押してデプロイされたアプリを見てみましょう。 多少コールドスタートが発生することはありますが、正しく表示されていることが確認できます。

このアプリには、ダッシュボードの”Member Access”で招待されているメンバーしかアクセスすることができないので、ユーザー認証も自動的に付与されています。

メンバーを招待したい場合は以下の画面からユーザーを招待してください。無料プランで5人のユーザーまで招待をすることができます。

以上のようにMorphを使用することで簡単にStreamlitのアプリをクラウドにデプロイしてチームメンバーで共有をすることができました。

Streamlit以外にもNext.jsやHonoXなどのフルスタックフレームワークのサポートを拡張しています。もしサポート対象のリクエストがあればお気軽にご連絡ください🚀

3
Morphテックブログ

Discussion

ログインするとコメントできます