PR

Python (Django), React, MySQLを使ったMVP開発のステップバイステップガイド


Django + React + MySQL を使った MVP 開発ガイド【Dockerを活用】

はじめに

本記事では、Python (Django)ReactMySQL を使って、簡単な MVP(最小限の実行可能な製品)を作成する方法をステップバイステップで解説します。この構成は、Web アプリケーションを開発するための一般的なフレームワークであり、バックエンドとフロントエンドを分けて開発するモダンなアーキテクチャを採用しています。

使用する技術

  • バックエンド: Python, Django
  • フロントエンド: React
  • データベース: MySQL
  • コンテナ化ツール: Docker
  • 環境: ローカル開発

必要な準備

  • Python 3.9 以上
  • Node.js と npm
  • Docker と Docker Compose
  • MySQL データベース

1. プロジェクトの構成

まずは、プロジェクトのディレクトリ構造を決めましょう。基本的な構成は次のようになります。

my-mvp-project/
├── backend/                # Django バックエンド
│   ├── Dockerfile
│   ├── requirements.txt
│   └── (その他 Django のファイル)
├── frontend/               # React フロントエンド
│   ├── Dockerfile
│   ├── package.json
│   └── (その他 React のファイル)
├── docker-compose.yml      # Docker Compose 設定ファイル
└── README.md

2. Docker と Django のセットアップ

まずは、バックエンドの Django を Docker を使ってセットアップします。

2.1. Dockerfile の作成(Django 用)

backend ディレクトリ内に Dockerfile を作成します。これにより、Django アプリケーションをコンテナ内で実行できます。

# Python のベースイメージを指定
FROM python:3.9-slim

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
    python3-dev \
    libmariadb-dev \
    pkg-config \
    build-essential \
    libssl-dev \
    && rm -rf /var/lib/apt/lists/*

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

# requirements.txt をコピーしてインストール
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

# アプリケーションコードをコピー
COPY . /app/

# ポート 8000 を開放
EXPOSE 8000

# Django の開発サーバーを起動
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

2.2. requirements.txt の作成

次に、backend ディレクトリ内に requirements.txt を作成し、必要なパッケージを記述します。

Django>=4.0,<5.0
mysqlclient

2.3. Django プロジェクトの作成

Django プロジェクトを作成するには、次のコマンドを実行します。

docker run --rm -v ${PWD}/backend:/app -w /app python:3.9-slim /bin/bash -c "pip install django && django-admin startproject backend ."

これで、backend フォルダに Django プロジェクトが作成されます。

2.4. MySQL の設定

MySQL を使用するために、Django の設定ファイル settings.pyDATABASES セクションを以下のように設定します。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'db',
        'PORT': '3306',
    }
}

次に、MySQL コンテナをセットアップするために、docker-compose.yml を作成します。


3. Docker Compose の設定

3.1. docker-compose.yml の作成

docker-compose.yml ファイルをプロジェクトのルートディレクトリに作成します。このファイルにより、Django と MySQL のコンテナを一緒に立ち上げることができます。

version: '3.8'

services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydb
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - "3306:3306"

  backend:
    build: ./backend
    command: >
      bash -c "
        while ! mysqladmin -h db -u root -ppassword ping --silent; do
          echo 'Waiting for MySQL...';
          sleep 2;
        done;
        python manage.py migrate &&
        python manage.py runserver 0.0.0.0:8000
      "
    volumes:
      - ./backend:/app
    ports:
      - "8000:8000"
    depends_on:
      - db


  frontend:
    build: ./frontend
    command: ["npm", "start"]
    volumes:
      - ./frontend:/app
    ports:
      - "3000:3000"
    depends_on:
      - backend

volumes:
  db_data:

これで、Django と MySQL が別々のサービスとして実行されます。


4. React のセットアップ

4.1. React アプリの作成

frontend ディレクトリに移動して、React アプリケーションを作成します。

npx create-react-app frontend

4.2. Dockerfile の作成(React 用)

frontend ディレクトリ内に Dockerfile を作成します。

# Node.js のベースイメージを指定
FROM node:16-alpine

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

# package.json と package-lock.json をコピー
COPY package*.json ./ 

# 依存パッケージをインストール
RUN npm install

# アプリケーションコードをコピー
COPY . /app/

# React の開発サーバーを起動
CMD ["npm", "start"]

5. アプリケーションの起動

5.1. コンテナをビルドして起動

以下のコマンドで、バックエンド(Django)とフロントエンド(React)のコンテナをビルドして起動します。

docker-compose up --build

これで、バックエンドは http://localhost:8000 で、フロントエンドは http://localhost:3000 でアクセスできるようになります。


6. MySQL データベースの設定

Django のマイグレーションを実行して、データベースのテーブルを作成します。

docker-compose exec backend python manage.py migrate

7. 最後に

ここまでの手順を終えたら、あなたのローカル環境で Django、React、MySQL を使ったアプリケーションが稼働しているはずです。

これで基本的なセットアップは完了です。あとは、フロントエンドとバックエンドを連携させ、必要な機能を実装していけば、MVP としてのシステムが完成します。


まとめ

この記事では、Python (Django)ReactMySQL を使って MVP を構築する方法を紹介しました。Docker を使うことで、複数のサービスを簡単にセットアップして管理することができ、開発の効率が向上します。この構成は、バックエンドとフロントエンドを分けて開発する際に非常に便利であり、実際のプロジェクトで活用できます。

コメント

タイトルとURLをコピーしました