【Streamlit】アプリのデプロイ:ローカルサーバーでの公開(Docker編)

Streamlit
この記事は約5分で読めます。

こんにちは、JS2IIUです。
前回、Streamlit Community Cloudでアプリを公開する方法についての記事を書きました。今回はDockerを使ってアプリをローカルに公開するベーシックな方法をみていきます。よろしくお願いします。

はじめに

この記事では、Pythonで作成したStreamlitアプリを Docker を使って ローカルサーバーで公開する方法 をステップバイステップで解説します。

Streamlitは簡単にデータ可視化アプリを作れる便利なフレームワークですが、「アプリを他の人と共有するにはどうすればいいの?」と悩む方も多いはずです。そこで今回は、ローカル環境でDockerを使ったデプロイ方法をご紹介します。

Dockerが初めてという方でもわかるように、丁寧に解説していきます。

1. Streamlitアプリの準備

まずは、シンプルなStreamlitアプリを用意しましょう。

📁 ディレクトリ構成

以下のようなフォルダを作成してください:

Plaintext
my-streamlit-app/
├── app.py
└── requirements.txt

📝 app.py

Python
import streamlit as st

st.title("こんにちは、Docker × Streamlit!")
st.write("このアプリはDockerコンテナで動作しています。")

このアプリは、「タイトル」と「テキスト」を表示するだけのシンプルなものです。

📝 requirements.txt

Streamlitアプリが動作するのに必要なパッケージを記述します:

Plaintext
streamlit

2. Dockerとは?

Dockerは、「アプリとその動作に必要な環境をまとめて1つのパッケージ(=コンテナ)にする技術」です。

これにより、以下のようなメリットがあります:

  • 他の人のPCでも「同じ環境」でアプリが動作する
  • 本番環境への移行がスムーズになる
  • OSに依存せず、どこでも同じように動く

今回は、ローカル開発用にDockerを使う方法をご紹介します。

3. Dockerfile の作成

Dockerfileとは、「Dockerイメージをどう作るか」を記述した設計図です。以下のようにファイルを作成します。

📝 Dockerfile

Dockerfile
# Pythonの軽量イメージをベースにする
FROM python:3.9-slim

# 作業ディレクトリを作成
WORKDIR /app

# 必要なライブラリをコピーしてインストール
COPY requirements.txt .  
RUN pip install --no-cache-dir -r requirements.txt  

# アプリ本体をコピー
COPY . .

# ポートを開放(Streamlitのデフォルトポート)
EXPOSE 8501

# アプリを起動するコマンド
CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]

✅ 解説

  • FROM: Pythonの公式イメージを使用
  • WORKDIR: 作業ディレクトリ(/app)を指定
  • COPY: ファイルをDocker内にコピー
  • RUN: パッケージをインストール
  • EXPOSE: 使用するポートを明示(8501)
  • CMD: コンテナ起動時にStreamlitアプリを実行するコマンド

4. Dockerイメージのビルド

次に、作成したDockerfileをもとにイメージをビルド(構築)します。

🛠 コマンド

ターミナルで my-streamlit-app ディレクトリに移動し、以下を実行:

Bash
docker build -t my-streamlit-app .

✅ 解説

  • -t my-streamlit-app: このイメージに「my-streamlit-app」という名前をつける
  • .: カレントディレクトリ(Dockerfileのある場所)を指定

5. Dockerコンテナの起動

イメージができたら、それを元に コンテナを起動 します。

🚀 コマンド

Bash
docker run -p 8501:8501 my-streamlit-app

✅ 解説

  • -p 8501:8501: ホスト(自分のPC)の8501ポートを、コンテナの8501ポートに接続
  • my-streamlit-app: 起動するDockerイメージ名

6. ブラウザでアプリにアクセス

Dockerコンテナが起動すると、以下のようなログが表示されます:

Plaintext
  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://192.168.x.x:8501

🌐 ブラウザで確認

http://localhost:8501 にアクセスすると、Streamlitアプリが表示されます。

7. よくあるエラーとその対処法

❌ Dockerコマンドが使えない

→ Docker Desktop が起動しているか確認してください。

❌ モジュールが見つからない(ModuleNotFoundError)

requirements.txt に不足がないか確認してください。

❌ ポートが競合している

→ 他に8501ポートを使っているアプリがないか確認するか、別のポートを指定してください(例:-p 8502:8501)。

8. まとめ

今回の内容をまとめます:

✅ Streamlitアプリを準備
✅ Dockerfile を作成
✅ Docker イメージをビルド
✅ Docker コンテナを起動
✅ ブラウザでアプリを確認

これで、ローカル環境でStreamlitアプリをDockerで公開できました!

今後は、このDockerコンテナを他の人に渡したり、クラウドにデプロイするステップに進むこともできます。

9. 参考リンク

おわりに

Dockerを使えば、環境の違いによる動作の不一致を防ぐことができ、チーム開発や配布がとても楽になります。ぜひこの機会に、ローカルでのデプロイを体験してみてください!

最後まで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました