📌

FlaskアプリケーションをDockerとWSL2で起動する方法

2024/07/28に公開

この記事では、FlaskアプリケーションをDockerとWSL2を使って起動するための手順を解説します。指定されたroot pathにフォルダを作成し、repository名とport番号を指定して環境を作成するbash関数も紹介します。

前提条件

  • Dockerがインストールされていること
  • WSL2がインストールされていること
  • Windows環境であること

手順

1. プロジェクトディレクトリの作成

まず、プロジェクトディレクトリを作成します。以下のbash関数を使用して、指定されたroot pathにフォルダを作成し、Flask環境を構築します。

#!/bin/bash

create_flask_env() {
  local root_path=$1
  local repo_name=$2
  local port=$3
  local container_name=${4:-flask_app}

  # root pathが指定されている場合、フォルダを作成
  if [ -n "$root_path" ]; then
    mkdir -p "$root_path/$repo_name"
    cd "$root_path/$repo_name" || exit
  else
    mkdir -p "$repo_name"
    cd "$repo_name" || exit
  fi

  # Dockerfileの作成
  cat <<EOF > Dockerfile
# ベースイメージとしてPython 3.8を使用
FROM python:3.8-slim

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

# 必要なパッケージをインストール
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# アプリケーションのソースコードをコピー
COPY . .

# コンテナが起動する際に実行されるコマンド
CMD ["python", "app.py"]
EOF

  # requirements.txtの作成
  echo "Flask" > requirements.txt

  # app.pyの作成
  cat <<EOF > app.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, World!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=$port)
EOF

  # docker-compose.ymlの作成
  cat <<EOF > docker-compose.yml
version: '3'
services:
  web:
    build: .
    container_name: $container_name
    working_dir: /app
    volumes:
      - .:/app
    ports:
      - "$port:$port"
EOF

  echo "Flask環境が作成されました。以下のコマンドを実行して起動してください:"
  echo "docker-compose up"
}

2. 関数の実行

上記の関数を実行して、Flask環境を作成します。例えば、以下のように実行します。

create_flask_env "/path/to/root" "my_flask_repo" 8081 "my_flask_app"

3. Dockerコンテナの起動

プロジェクトディレクトリに移動し、以下のコマンドを実行してDockerコンテナを起動します。

source /path/to/bash/create_flask_env.sh
base_dir=/path/to/root
app_name="my_flask_repo"
create_flask_env "$base_dir" "$app_name" 8080 "my_flask_repo"
cd "$base_dir/$app_name"
docker-compose build && docker-compose down && docker-compose up

4. ブラウザでアクセス

WindowsのChromeブラウザで http://localhost:8081 にアクセスします。これでFlaskアプリケーションのウェブページが表示されるはずです。

まとめ

この記事では、FlaskアプリケーションをDockerとWSL2を使って起動するための手順を解説しました。指定されたroot pathにフォルダを作成し、repository名とport番号を指定して環境を作成するbash関数を使用することで、簡単にFlask環境を構築することができます。

Discussion