今回はStreamlitの環境をDockerで作っていきたいと思います。
することリスト
- requirements.txtを作成する
- main.pyを作成する
- Dockerfileを作成する
- docker-compose.yamlを作成する
requirements.txtを作成する
まずはstreamlitをインストールするためにrequirements.txtを作成します。
streamlit
main.pyを作成する
ファイル名はなんでも良いです。良いですが、後で登場するdocker-compose.yaml内の起動コマンドに連動するところですので注意してください。
main.pyでは簡単に、 Hello World!
を表示させたいと思います。
import streamlit as st
st.write("Hello world!!")
Dockerfileを作成する
StreamlitではPython3.6以降が必要です。今回は執筆時点で最新の 3.12
を使用します。
FROM python:3.12
ENV APP_PATH /app
RUN mkdir $APP_PATH
COPY . $APP_PATH
RUN pip install -r $APP_PATH/requirements.txt
WORKDIR $APP_PATH
EXPOSE 8501
ここでは
- Python 3.12を使います
- イメージ作成時に必要なライブラリをインストールします
- ポートは8501を開けます
ということを表現しています。
docker-compose.yamlを作成する
コンテナ1つだけならdocker-compose.yaml必要なくない?という人も多いでしょう。しかし、最初からこんなふうに作っておくと後でコンテナを追加したいってなった時に楽なのでこの時点で作っちゃいます。
version: "3"
services:
streamlit:
restart: always
build: .
tty: true
volumes:
- ./:/app
command: /bin/sh -c "cd /app; pip install -r requirements.txt; streamlit run main.py;"
ports:
- 8501:8501
これで必要なものは揃いました。イメージをビルドし、起動させてみましょう!
ビルド
以下のコマンドでイメージをビルドします。
$ docker-compose build
コンテナ起動
以下のコマンドでコンテナを起動します。
$ docker-compose up
これで以下のようになったら成功です🎉
...
...
streamlit_1 | You can now view your Streamlit app in your browser.
streamlit_1 |
streamlit_1 | Network URL: http://172.27.0.2:8501
streamlit_1 | External URL: http://122.222.78.159:8501
streamlit_1 |
ブラウザでアクセスする
ブラウザで localhost:8501
にアクセスしてみましょう!
以下のようになったら成功です。
いかがでしたでしょうか?SteamlitをDocker上で動かすのはかなり簡単ですね。
今後、Streamlitに関する記事を書いていこうと思っています。
最後までお読みいただきありがとうございました。今後ともよろしくお願いします。