このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:開発環境コンテナ:Django+MySQL②

🐳 開発環境コンテナ:Django+MySQL②

前回の「開発環境コンテナ:Django+MySQL①」に続いて、
ここでは Djangoプロジェクトを作成し、MySQLと接続できるように設定していきます。

Djangoコンテナ(MySQL)は次の2部構成になっています。

ここでは、Djangoプロジェクトを作成して、Djangoコンテナへの接続を行っていきます。

⚙️ Djangoプロジェクトの作成

Djangoを起動させるためには、まず Djangoプロジェクト を作成する必要があります。
プロジェクト作成には django-admin コマンドを使いますが、
今回は docker compose run を使ってコンテナ内でこのコマンドを実行します。

🧩 Djangoプロジェクト作成コマンド

docker compose run django django-admin startproject myproject .

このコマンドは一時的に django サービスのコンテナを起動し、
その中で django-admin コマンドを実行して「myproject」というプロジェクトを作成します。
末尾の .現在のディレクトリ にプロジェクトを展開することを意味します。

項目説明
docker compose runDocker Composeで一時的にコンテナを実行するコマンド。
django実行するサービス名(compose.yamlで定義したdjangoサービス)。
django-adminDjangoの管理コマンドツール。プロジェクトの生成やアプリ作成を行う。
startproject新しいDjangoプロジェクトを開始するサブコマンド。
myproject作成するプロジェクトの名前。
.カレントディレクトリに作成する指定。

💡 ポイント

 この操作により、ローカルディレクトリに myproject フォルダと manage.py が生成されます。

🧱 実行結果

PowerShell上で次のように実行します。

PS C:\Users\joeac\Desktop\docker\django2> docker compose run django django-admin startproject myproject .
[+] Running 12/12
(省略)
 => resolving provenance for metadata file                                        0.0s
PS C:\Users\joeac\Desktop\docker\django2>

実行後、myproject フォルダと manage.py ファイルが作成されれば成功です。
Djangoのプロジェクトテンプレートが生成されます。

「myproject」フォルダの確認

「myproject 」ディレクトリの中身を確認します。

「settings.py」ファイルがあります。このファイルを、この後で編集していきます。

🧹 一時コンテナの停止とクリーンアップ

プロジェクトを作成したら、一時的に起動したコンテナを停止して削除します。

docker compose stop
docker system prune -a
コマンド説明
docker compose stop実行中のコンテナを停止します。
docker system prune -a不要なコンテナ・イメージ・ネットワークをすべて削除します。

実行結果

PS C:\Users\joeac\Desktop\docker\django2> docker compose stop
[+] Stopping 1/1
 ✔ Container mysql_container  Stopped                                             1.5s
PS C:\Users\joeac\Desktop\docker\django2> docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y

⚠️ 注意

docker system prune -a は未使用のすべてのイメージを削除します。
確認メッセージが出たら y を入力して実行します。

📝 設定ファイル(settings.py)の編集

Djangoのデフォルト設定では、データベースに SQLite が使われています。
ここでは、MySQLを使うように設定を変更します。

🔍 settings.py の場所

プロジェクト作成後、次の構成になっています。

myproject/
├── __init__.py
├── asgi.py
├── settings.py  ← 編集するファイル
├── urls.py
└── wsgi.py
manage.py

settings.py ファイルを開きましょう。

code ./myproject/settings.py

🧠 データベース設定の変更

DATABASES の項目を次のように書き換えます👇
赤枠の「DATABASES」の内容を書き換えます。

書き換える内容

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test-db',
        'USER': 'test-user',
        'PASSWORD': 'test-pass',
        'HOST': 'mysql',
        'PORT': '3306',
    }
}
項目内容
ENGINEDjangoで使用するデータベースエンジン。ここではMySQLを指定。
NAMEデータベース名(compose.yamlで設定したMYSQL_DATABASE)。
USER接続ユーザー名(compose.yamlのMYSQL_USER)。
PASSWORD接続パスワード(compose.yamlのMYSQL_PASSWORD)。
HOSTデータベースコンテナ名(ここではmysql)。
PORTMySQLの接続ポート番号(3306)。

💡 ポイント

HOST の値には、Docker Composeで定義したMySQLのサービス名「mysql」を指定します。
これにより、同じネットワーク上のDjangoコンテナからMySQLに接続できます。

🚀 コンテナの作成と実行

設定が終わったら、Composeを使ってコンテナを再度起動します。

docker compose up -d
オプション説明
upコンテナを作成して起動します。
-dバックグラウンドで実行(デタッチドモード)。

💬 補足

このコマンドは「compose.yaml」が存在するディレクトリで実行してください。
正しく起動すれば django_containermysql_container が立ち上がります。

実行結果

PS C:\Users\joeac\Desktop\docker\django2> docker compose up -d
[+] Running 12/12
 ✔ mysql Pulled                                                                  17.5s
 (省略)
[+] Running 4/4
 ✔ django2-django              Built                                              0.0s
 ✔ Network django2_default     Created                                            0.0s
 ✔ Container mysql_container   Started                                            0.6s
 ✔ Container django_container  Started                                            0.7s
PS C:\Users\joeac\Desktop\docker\django2>

🖥️ 実行確認

ブラウザを開いて、以下のURLにアクセスします👇

http://localhost:8000

Djangoのトップページ(Welcome to Django!)が表示されれば成功です✨
これで、MySQLに接続可能なDjango環境コンテナが正常に動作しています。

✅ まとめ

ここまでの流れを整理すると次のようになります。

ステップ内容
docker compose run でDjangoプロジェクトを作成。
一時コンテナを停止・削除して環境を整理。
settings.py のDATABASES設定をMySQL用に変更。
docker compose up -d で本番用コンテナを起動。
http://localhost:8000 にアクセスして動作確認。

これで、Django+MySQLの連携開発環境コンテナが完成しました!🎉
今後はこの環境をベースに、Djangoアプリを自由に開発できます。