簡単なFlaskアプリをChatGPTに教えてもらいながら作成しました。
Docker Desktopを起動してから以下を順番に進めました。
ディレクトリ構造の作成
mkdir flask_app cd flask_app
Dockerfileの作成
flask_app/Dockerfile
# ベースイメージとしてUbuntuを使用 FROM ubuntu:latest # 必要なパッケージをインストール RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ vim \ nginx \ && rm -rf /var/lib/apt/lists/* # FlaskとuWSGIをインストール RUN pip3 install flask uwsgi # アプリケーションディレクトリを作成 RUN mkdir -p /app # 作業ディレクトリを設定 WORKDIR /app # Nginxの設定ファイルをコピー COPY nginx.conf /etc/nginx/nginx.conf # アプリケーションのソースコードをコピー COPY . /app # ポート80を開放 EXPOSE 80 # NginxとuWSGIを起動 CMD service nginx start && uwsgi --ini uwsgi.ini
Nginxの設定ファイルの作成
flask_app/nginx.conf
user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } } }
uWSGIの設定ファイルの作成
flask_app/uwsgi.ini
[uwsgi] module = app:app master = true processes = 4 socket = 127.0.0.1:8000 vacuum = true die-on-term = true
Flaskアプリケーションの作成
flask_app/app.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, World!" if __name__ == "__main__": app.run()
Dockerコンテナのビルドと起動
flask_appディレクトリで以下を実行
docker build -t flask_app . docker run -p 80:80 flask_app
動作確認
http://localhost:80 にアクセス
※最初はブラウザでエラーになったが、Docker Desktop上のリンクからだとアクセスできた(謎)