Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@Nate0928

【簡単爆速第2弾】Streamlitをherokuにデプロイ

前回までのあらすじ

前回の記事

PythonのオープンソースフレームワークであるStreamlitを使って、爆速でwebアプリを作りました。

今回の流れ

Streamlitで作ったwebアプリのディレクトリに必要なファイルを追加して、herokuにデブロイしていこうと思います。
必要なものは

  • requrements.txt
  • setup.sh
  • Procfile
  • runtime.txt

requrements.txt

サーバーがコードを実行するためには、何をダウンロードするか必要があるかを認識させるものです。
streamlitや必要に応じてnumpypandasを入れてあげましょう。
下は一例です。

requrements.txt
streamlit==0.60.0
matplotlib==2.2.3 
numpy==1.15.1

App not compatible with buildpack
エラー出る
requirement.txt
runtime.txt作る
Procfile

setup.sh

setup.shrequirements.txtと同様にアプリがサーバー上で動作する環境を作るものです。emailは各々で変更してください。

setup.sh
mkdir -p ~/.streamlit/

echo "\
[general]\n\
email = \"your-email@domain.com\"\n\
" > ~/.streamlit/credentials.toml

echo "\
[server]\n\
headless = true\n\
enableCORS=false\n\
port = $PORT\n\
" > ~/.streamlit/config.toml

Procfile

サーバーがどういったコマンドで実行すればいいかを記述するものです。

web: sh setup.sh && streamlit run {name_of_app}.py

デプロイしていく

まずはログイン

$ heroku login

herokuはGitを使用してるので、いつもGitレポジトリの初期化を行います。

$ git init
$ git add .
$ git commit -m "first commit"

そしてherokuに新しいインスタンスを作成します。

$ heroku create

あとはpushして開くだけです。

$ git push heroku master
$ heroku open

私も試しにTSPを2-opt法で解けるアプリケーションをデプロイしました。

TSP_app.mov.gif

最後に

Pythonだけで気軽に成果物をそれっぽい形にできるStreamlitを、今回はデプロイしてみました。
デプロイまで非常に爆速でしたね。
Streamlit自体の便利さや爆速加減を知りたい方は、ぜひ前回の記事をご覧ください!!

次の記事

8
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What is going on with this article?