\ お問い合わせはこちら! /

StreamlitアプリをDocker化する方法

  • URLをコピーしました!

事前準備

Docker Desktopをインストールする

Dockerの公式ページから直接ダウンロードするか、以下のbrewコマンドでインストールします。

brew install --cask docker

インストール後は、必ずDocker Desktopを起動するようにしてください。

会員登録を求められますが、個人利用なら無料で使えるのでGoogleアカウントなどで登録してしまって大丈夫です。(2025年6月現在)

上記のbrewコマンドは、Homebrewインストール後に実行しましょう。

▼ Homebrewのインストール方法はこちら

Streamlitアプリの開発

Streamlitアプリを作成する

続いて、Streamlitアプリを作成しましょう。

自由にお作りいただいても構いませんが、サクッと進めたい方は以下の記事で紹介しているソースコードを使って家計簿アプリを構築するのが簡単です。

今回のフォルダ構成

今回はDocker環境なので、次のような構成となります。

kakeibo-app/
├── app.py
├── requirements.txt
├── Dockerfile
└── .dockerignore

すでにapp.pyは作成ずみという前提としますので、その他のファイルの中身を解説していきましょう。

requirements.txt

インストールするライブラリをrequirements.txtに書き出します。

streamlit
pandas
matplotlib
watchdog

本当はバージョンまで指定した方が依存関係が固定化されて望ましいのですが、今回は動作確認程度としたいのでライブラリ名だけでOKとします。

Dockerfile

Dockerを動かすためのDockerfileは、以下のようにします。

FROM python:3.11-slim

WORKDIR /app
COPY . /app

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.enableCORS=false"]

python:3.11-slimという軽量なPythonイメージを使い、CMDでStreamlit起動をしています。

--server.enableCORS=falseオプションは、外部アクセス対応のためにつけました。

コンテナをビルド・実行する

Dockerコンテナを動かすまでの手順を説明します。

Dockerイメージのビルド

まずはDockerイメージを作成する「ビルド」という作業を行います。

以下のコマンドを実行してください。

docker build -t streamlit-app .

するとDockerイメージを作成するためのプロセスが流れていきますので、終わるまでしばらく待ちましょう。

ちなみに最後の.は、「現在いるディレクトリに存在するDockerfileを使ってビルドせよ」という意味になります。

Dockerイメージの名前を確認する

先ほど作成したイメージの名前を確認しましょう。

docker images

実行結果は以下のようになります。

REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
streamlit-kakeibo   latest    8a5199639b09   8 minutes ago   1.62GB

streamlit-kakeiboが、このイメージの名前となります。

この名前は次のステップで使います。

作成したDockerコンテナを起動する

作成したイメージを実行するコマンドは、以下になります。

docker run -p 8501:8501 streamlit-kakeibo

-p 8501:8501は、ホストPCの8501ポートとDockerコンテナの8501ポートに対応させる問いう意味になります。

そのため、ブラウザからlocalhost:8501ポートにアクセスするとStreamlitアプリにアクセスできるようになるわけです。

最後のstreamlit-kakeiboは、一つ前のステップで確認したイメージ名です。

起動確認

どのURLにアクセスすればいいかは、ターミナルの画面上に表示されます。

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://xxx.xx.x.x:8501
  External URL: http://xxx.xxx.xx.xxx:8501

今回はローカルで起動するので、ブラウザでhttp://localhost:8501/を開けばOKです。

以下のような画面が表示されれば、Dockerでの実行は完了です。

完成したアプリをVPSを使ってインターネット上に一般公開する

ここで完成したアプリは、VPSを使って一般公開が可能です。

今回はDockerを使っている関係上、一般公開もかなりハードルが低くなります。

一般公開までの方法は別記事にまとめてありますので、ぜひそちらも実践して見てください。

シェアはこちら
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅行が趣味のミニマリストです。
YouTubeでは「食べて飲んで帰るだけ」をテーマに『酔い旅』を投稿しています。
たまに趣味のプログラミング記事の投稿します。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)