Docker による Streamlit アプリの公開

2023年8月21日

はじめに

Docker を用いて Streamlit アプリを公開することを考える。作業は Ubuntu で行う。

Docker イメージの作成

作業ディレクトリを作成する。

$ mkdir streamlit
$ cd streamlit

公開するプログラムを用意する。

sqrt.py

import streamlit as st

st.markdown("# 平方根計算")

text = st.text_input(value="",
    label="数値",
    placeholder="数値を入力")

def sqrt(a):
    if a <= 0: return 0
    x = 1.
    for i in range(10):
        x = x - (x**2 - a)/(2.*x)
    return x

try:
    a = float(text)
    x = sqrt(a)
    st.write(x)
except:
    pass

Dockerfile は以下のようになる。

Dockerfile

FROM python:3.9-slim

RUN pip install streamlit

WORKDIR /app
ADD ./sqrt.py /app

EXPOSE 8501
ENTRYPOINT ["streamlit", "run", "sqrt.py", "--server.port=8501", "--server.address=0.0.0.0"]

ビルド。

$ docker build -t streamlit .
$ docker images
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
streamlit      latest    9d87a3b3c7b4   23 seconds ago   601MB

実行。

$ docker run -p 8501:8501 streamlit

Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.


  You can now view your Streamlit app in your browser.

  URL: http://0.0.0.0:8501

http://localhost:8501/ にブラウザでアクセスする。