Flask + DockerはPython開発者にとって鉄板の組み合わせです🔥
Flaskを使ってブラウザでWebページを表示するDockerアプリを一緒に作っていきます!
ゴール
- Flask を使った簡単なWebアプリを作成
- http://localhost:5000 でブラウザ表示できるようにする
📁 ディレクトリ構成(最小)
my-flask-app/
├── Dockerfile
├── requirements.txt
└── app.py
📄 app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return '<h1>Hello from Flask in Docker!</h1>'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
📄 requirements.txt
flask
📄 Dockerfile
FROM python:3.12-slim
WORKDIR /app
# ライブラリのインストール
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# アプリコードをコピー
COPY app.py .
# ポートを明示(任意)
EXPOSE 5000
# Flaskアプリを起動
CMD ["python", "app.py"]
🏗️ ビルド
docker build -t my-flask-app .
🚀 実行
docker run -d -p 5000:5000 --name flask-app my-flask-app
✅ 動作確認
ブラウザで以下にアクセス:
http://localhost:5000
→ Hello from Flask in Docker! が表示されれば成功です🎉
🛑 停止&削除
docker stop flask-app
docker rm flask-app
エラーのとき
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5000 -> 0.0.0.0:0: listen tcp 0.0.0.0:5000: bind: address already in use.
このエラーは、ホスト側のポート5000がすでに使われていることを示しています。
✅ 解決方法(いずれかを選択)
🔧 方法①:使ってるプロセスを止める
lsof -i :5000
または macOSの場合:
sudo lsof -nP -iTCP:5000 | grep LISTEN
→ プロセスID(PID)が出たら:
kill -9 PID番号
🔄 方法②:違うポートを使う(例:5001)
docker run -d -p 5001:5000 --name flask-app my-flask-app
→ http://localhost:5001 にアクセス