0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flask + Docker を使った簡単なWebアプリの作成

Last updated at Posted at 2025-03-31

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 にアクセス

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?