Docker Moby Logo

[Docker]Django + MySQL の開発環境を docker-compose で構築する

DjangoPython で書かれた高機能なWebフレームワークで、データベースとして MySQL を使用することが多いです。この組み合わせで開発環境を効率的に構築するには、 Dockerdocker-compose を使用するのが最適です。この記事では、 Django 4.0MySQL 8.0 を使用して開発環境を docker-compose で構築する手順を詳しく説明します。

1. 環境構築の準備

まず、プロジェクト用のディレクトリを作成し、その中にDockerfiledocker-compose.ymlなどの設定ファイルを配置します。以下の手順に従って準備を進めます。

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

mkdir django_mysql_docker
cd django_mysql_docker

1.2 必要なファイルの作成

プロジェクトディレクトリ内に以下のファイルを作成します。

  • Dockerfile
  • docker-compose.yml
  • requirements.txt

2. Dockerfileの作成

Dockerfileは、Djangoアプリケーションのイメージを作成するための設定ファイルです。以下のように作成します。

# ベースイメージとしてPythonを使用(Django 4.0に対応するPython 3.9を使用)
FROM python:3.9

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

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

# プロジェクトのソースコードをコピー
COPY . /app/

# Djangoアプリケーションを起動
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

3. requirements.txtの作成

requirements.txtには、DjangoとMySQLのドライバを含む必要なPythonパッケージを指定します。今回はDjango 4.0を使用します。

Django>=4.0,<5.0
mysqlclient

4. docker-compose.ymlの作成

docker-compose.ymlは、DjangoとMySQLコンテナを定義するファイルです。以下の内容で作成します。

version: '3.8'

services:
  db:
    image: mysql:8.0 # MySQL 8.0を使用
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: django_db
      MYSQL_USER: django_user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      DB_HOST: db
      DB_NAME: django_db
      DB_USER: django_user
      DB_PASSWORD: password

volumes:
  db_data:

5. Djangoプロジェクトの設定

5.1 Djangoプロジェクトの作成

Djangoプロジェクトを作成し、設定ファイルを編集します。

docker-compose run web django-admin startproject myproject .

5.2 settings.pyの編集

Djangoプロジェクトのsettings.pyファイルを編集して、MySQLデータベースの設定を追加します。

# myproject/settings.py

import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.getenv('DB_NAME'),
        'USER': os.getenv('DB_USER'),
        'PASSWORD': os.getenv('DB_PASSWORD'),
        'HOST': os.getenv('DB_HOST'),
        'PORT': '3306',
    }
}

6. コンテナのビルドと起動

すべての設定が完了したら、コンテナをビルドして起動します。

6.1 コンテナのビルド

docker-compose build

6.2 コンテナの起動

docker-compose up

6.3 マイグレーションの実行

初回起動時に、Djangoのデータベースマイグレーションを実行して、データベースを初期化します。

docker-compose run web python manage.py migrate

7. 動作確認

ブラウザでhttp://localhost:8000にアクセスして、Djangoの初期画面が表示されることを確認します。

Django Welcome Page

まとめ

この記事では、Django 4.0とMySQL 8.0の開発環境をdocker-composeを使用して効率的に構築する方法を紹介しました。この手法を使用することで、開発環境を簡単にセットアップでき、他の開発者と共有することができます。以下に主要なステップをまとめます。

  • プロジェクトディレクトリの作成: 必要なファイルを配置。
  • Dockerfileの作成: Djangoアプリケーションのイメージを定義。
  • requirements.txtの作成: 必要なPythonパッケージを指定。
  • docker-compose.ymlの作成: DjangoとMySQLのコンテナを定義。
  • Djangoプロジェクトの設定: MySQLデータベースを設定。
  • コンテナのビルドと起動: 開発環境を起動。
  • 動作確認: ブラウザでDjangoの初期画面を確認。

これらの手順を踏むことで、Django 4.0とMySQL 8.0を使ったWebアプリケーション開発がスムーズに進められるようになります。ぜひ試してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です