Streamlitで作成したデータアプリをユーザー認証付きの環境へデプロイするチュートリアル
Morphを用いて、Streamlitで作ったデータアプリにユーザー認証をつけてクラウドへデプロイするチュートリアルを解説します。この手法では従来のStreamlitをCloudRunにデプロイする時に必要だったDockerでのビルドも必要なく手軽にチームにアプリを共有することができます。
Morphは、社内向けのデータアプリやAIアプリをGithubリポジトリから自動的にクラウドにデプロイをしてユーザー認証付きで共有をする機能を持ったクラウドサービスです。
今回はStreamlitのデプロイもサポートされたので、Streamlitで開発したアプリのデプロイのチュートリアルを解説します。事前に morph-data.ioにログインをしてください。
TL;DR
本チュートリアルの成果物は以下のリポジトリにも公開しています。
上記のリポジトリをフォークをして、以下の動画の手順を辿ることでStreamlitのアプリをクラウドにデプロイして招待したメンバーに共有することができます。
事前準備
事前準備として以下のパッケージをインストールしてください。
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も設定することができます。
ここまで設定ができたら、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などのフルスタックフレームワークのサポートを拡張しています。もしサポート対象のリクエストがあればお気軽にご連絡ください🚀
Discussion