このガイドでは、シンプルなFlaskアプリケーションをDockerでコンテナ化して実行する方法を解説します。
フォームを使ってユーザーの名前を入力し、「Hello, 名前!」と表示する簡単なアプリケーションを例にします。
前提条件
以下の環境が整っていることを確認してください:
- Python(3.10以上が推奨されます)
- Dockerがインストールされていること
- 基本的なターミナル操作の知識
Flaskアプリケーションを実行する手順
以下の手順に従って進めていきます。
プロジェクトフォルダを作成
まず、アプリケーションを配置するディレクトリを作成し、その中に移動します。
mkdir flask-sample-app
cd flask-sample-app
Flaskアプリケーションを作成
アプリケーション本体を記述する app.py を作成します。
touch app.py
以下のコードを app.py に記述します。
from flask import Flask, request, render_template_string
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def hello():
name = request.form.get('name', 'World')
html_form = """
<html>
<body>
<form method="post">
<label for="name">Enter your name:</label>
<input type="text" id="name" name="name">
<input type="submit" value="Submit">
</form>
<h1>Hello, {}!</h1>
</body>
</html>
""".format(name)
return render_template_string(html_form)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
このコードでは、GET または POST リクエストに基づいてフォームを表示し、名前を入力すると「Hello, [入力した名前]」と応答します。
必要なパッケージを指定
以下のコマンドで requirements.txt を作成します。
Flask==2.1.0
Werkzeug<2.1.0
Dockerイメージを作成
Dockerfileを作成
以下のコマンドで Dockerfile を作成します。
touch Dockerfile
内容
# Python 3.10の軽量版をベースに使用
FROM python:3.10-slim
# 作業ディレクトリを設定
WORKDIR /app
# 必要なファイルをコピー
COPY . /app
# Pythonの依存関係をインストール
RUN pip install --no-cache-dir -r requirements.txt
# アプリケーションを実行
CMD ["python", "app.py"]
この Dockerfile は、Flaskアプリケーションを実行するための軽量なPythonベースイメージを使用しています。
Dockerイメージをビルド
以下のコマンドを実行してDockerイメージを作成します
docker build -t flask-sample-app .
成功すると、flask-sample-app という名前のDockerイメージが作成されます。
Flaskアプリケーションを起動
コンテナを起動
以下のコマンドでコンテナを起動します。
docker run -p 8080:5000 flask-sample-app
このコマンドで、ローカルの8080ポートとコンテナ内の5000ポートをマッピングします。
アプリケーションはローカルの8080ポートで利用可能になります。
アプリケーションの確認
ブラウザで以下にアクセスします。
http://localhost:8080
フォームが表示されます。
名前を入力して「Submit」ボタンをクリックすると、画面に「Hello, [入力した名前]!」と表示されます。

よくあるエラーと対策
ポート競合エラー
Bind for 0.0.0.0:8080 failed: port is already allocated.
解決
使用中のポートを確認
sudo lsof -i :8080
該当プロセスを停止
sudo kill -9 <PID>
または、別のポートで起動
docker run -p 8090:5000 flask-sample-app
依存関係エラー
エラー
ERROR: Cannot install -r requirements.txt and Werkzeug<2.1.0 because these package versions have conflicting dependencies.
解決
requirements.txt を修正して、Flaskに合ったWerkzeugバージョンを指定します。
Flask==2.2.2
まとめ
これでFlaskアプリケーションをDockerで実行できるようになりました。
Dockerを使用することで、アプリケーションの依存関係や環境設定を簡単に管理できます。
次は、Docker Composeを使用して複数のサービスを管理する方法や、クラウドへのデプロイを学んでみましょう!


コメント