DockerとStreamlitの環境を構築する方法まとめ

今回は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に関する記事を書いていこうと思っています。

最後までお読みいただきありがとうございました。今後ともよろしくお願いします。

Related Posts