あなたは今、開発環境の構築で以下のような課題を抱えていませんか?
「Djangoを学習したいが、Pythonのインストールやパスの設定でつまずいてしまった」 「インターネットの記事通りにコマンドを入力しても、Windows環境ではエラーが発生して進めない」 「環境構築に時間がかかり、プログラミングの学習が始められない」
Windows上に直接Pythonをインストールする方法では、ライブラリのバージョンの競合や、環境変数の設定などで多くの時間を費やすことがあります。これは、プログラミング学習における大きな障壁となりがちです。
そこで有効な解決策となるのが Docker(ドッカー) です。
この記事では、Windowsユーザー向けに、Dockerを使ってDjangoの開発環境を構築する手順を解説します。PCの環境への影響を最小限に抑え、いくつかのファイルを用意するだけで、動作するDjango環境を構築できます。
煩雑なインストール作業を省略し、コマンド操作で開発環境を立ち上げる方法を学びましょう。エラーを回避し、ブラウザにHello Worldを表示させて、すぐにコードを書き始められる状態を目指します。
この記事では、具体的なコードとその仕組みについて、初心者の方にも理解しやすいように解説します。このガイドに従って、Djangoの開発環境を構築してみましょう。
- Dockerの基本的な利用方法
- Docker上でDjangoを利用する方法
1. なぜWindowsユーザーにDocker × Djangoが適しているのか?
環境構築におけるDockerの利点
WindowsでWeb開発を行う場合、Dockerの利用は非常に有効です。
その理由は、Dockerを使うことで「自分のPC(ホストOS)」と「開発環境(コンテナ)」を分離できるからです。これには開発者にとって大きなメリットがあります。
従来の方法では、Windows上に直接Pythonをインストールし、仮想環境(venv)を作成し、データベースソフトをインストールする手順が必要でした。しかし、これにはリスクが伴います。「プロジェクトAではPython 3.8が必要だが、プロジェクトBでは3.11を使いたい」「一度インストールしたデータベースの削除が難しく、ファイルが残ってしまう」といった、PC環境への影響です。特にWindowsは、MacやLinuxと異なり、ファイルパスの扱いやコマンドの違いによるトラブルが発生しやすい傾向にありました。
Dockerはこの問題を解決します。
Dockerは「コンテナ」と呼ばれる仮想的な箱の中に、OS(Linux)、Python、ライブラリなどをまとめて格納します。Windows上で開発していても、実際にはコンテナ内のLinux環境でプログラムが動作します。これにより、「Windows環境特有の問題」を回避できます。さらに、プロジェクトごとにコンテナを作成・削除できるため、PC環境を清潔に保てます。この 「隔離性」と「再現性」 が、Dockerを利用する大きな理由です。
開発効率を向上させる「バインドマウント」の仕組み
「コンテナ内のファイルを編集するには、毎回アップロードが必要なのか?」と疑問に思うかもしれません。
しかし、その必要はありません。Dockerには 「バインドマウント(Volumes)」 という機能があります。
今回の構築でも採用しているこの機能は、「Windows上の特定のフォルダ」と「コンテナ内の特定のフォルダ」を同期させる 技術です。
例えば、Windowsのデスクトップにある src フォルダを、コンテナ内の /app フォルダにマウント(同期)させたとします。使い慣れたエディタ(VSCodeなど)でWindows上の views.py を編集して保存すると、即座にコンテナ内の views.py も更新されます。Djangoはファイルの変更を検知して自動で再起動するため、ブラウザを更新するだけで修正が反映されます。
つまり、「ファイルはWindows上で管理し、実行はDockerに行わせる」 という効率的な開発スタイルが実現できます。これが、「pyファイルやhtmlはDockerの外に配置するのですか?」という問いへの答えであり、推奨される構成です。
WSL2によるWindows開発環境の進化
かつて、WindowsでのDocker動作は遅く、不安定な時期がありました。しかし、WSL2 (Windows Subsystem for Linux 2) の登場により、状況は大きく改善しました。
WSL2は、Windows内で「Linuxカーネル」を動作させる技術です。現在のDocker Desktop for Windowsは、このWSL2を利用して動作します。これにより、ファイルシステムへのアクセス速度が向上し、Linux環境との互換性が高まりました。
これから紹介する手順は、このDocker Desktop環境を前提としています。DockerとWSL2を利用できる現在のWindowsは、開発に適した環境となっています。
2. 【解説】WindowsでDocker × Django環境を構築する5ステップ
ここからは、実際に環境を作成する手順を説明します。手順はシンプルですが、各ファイルの意味を理解することで、応用力が身につきます。
事前準備:Docker Desktopのインストール
まず、Windows PCに Docker Desktop をインストールして、起動を確認してください。タスクバーにアイコンが表示されていれば準備完了です。コマンドプロンプトやPowerShellといったコマンドラインで、コンテナの作成が可能となります。
インストールについては、次の記事を参考にしてください。
ステップ1:ディレクトリ構成の設計
プロジェクトの基盤となるフォルダを作成します。トラブルを避けるため、ログ用のフォルダもこの段階で作っておきましょう。 デスクトップなど、任意の場所に django-hello という親フォルダを作成し、以下の構成を作ってください。
django-hello/ # プロジェクトルート
├── src/ # ソースコード置き場(空フォルダを作成)
├── logs/ # ログ保存場所(空フォルダを作成)
├── Dockerfile # コンテナの設計図
├── .dockerignore # 除外ファイル設定
├── .env # 環境変数ファイル
├── docker-compose.yml # 起動の設定ファイル
└── requirements.txt # ライブラリ一覧
ポイント: src フォルダと logs フォルダをあらかじめ作成しておきましょう。
ステップ2:requirements.txt の作成
インストールしたいPythonライブラリを記述します。今回は最小構成としてDjangoのみを指定します。
ファイル名: requirements.txt
Django>=4.2
解説: バージョンを指定しないことも可能ですが、実務では互換性を保つために Django>=4.2 のように指定するのが一般的です。これで4.2以上の最新版がインストールされます。
ステップ3:Dockerfile の作成と解説
次に、コンテナの「設計図」となる Dockerfile を作成します。 【重要】 ここでセキュリティ対策とログ出力設定を行います。Dockerコンテナはデフォルトで root ユーザーで動作しますが、これはセキュリティ上リスクがあります。そこで、一般ユーザーを作成して実行するように設定します。
ファイル名: Dockerfile
# 1. ベースイメージの指定
FROM python:3.11-slim
# 2. 環境変数の設定
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# 3. 作業ディレクトリの作成
WORKDIR /app
# 【セキュリティ対策 & ログ設定】
# root以外の一般ユーザー 'developer' を作成します (ID: 1000)
# -m: ホームディレクトリを作成
RUN useradd -m -u 1000 developer
# ログ出力用のディレクトリを作成し、developerユーザーに書き込み権限を付与
RUN mkdir -p /var/log/django && chown developer:developer /var/log/django
# 4. ライブラリのインストール
# pipインストールはシステム全体に行うためrootのまま実行します
COPY requirements.txt /app/
RUN pip install --upgrade pip && pip install -r requirements.txt
# 5. ソースコードのコピーと権限設定
# 本番用記述ですが、コピーするファイルの所有者を 'developer' に変更します
COPY --chown=developer:developer ./src /app/
# 【ユーザー切り替え】
# これ以降のコマンド(runserverなど)は 'developer' ユーザーとして実行されます
USER developer
解説:
- セキュリティ対策 (
useradd,USER): コンテナが万が一乗っ取られた際、root権限で動いているとホストOSへの被害が大きくなる可能性があります。そのため、実務では専用の一般ユーザー(ここではdeveloper)を作成し、そのユーザーでアプリケーションを動かすのが鉄則です。 - ログディレクトリの設定:
RUN mkdir -p /var/log/django ...で、ログファイルを保存する場所を作成し、一般ユーザーが書き込めるように権限を設定しています。 ENV PYTHONDONTWRITEBYTECODE=1: (.pycを作らない設定) Pythonは通常、起動を速くするために.pycというキャッシュファイルを作成します。しかし、Docker開発ではフォルダ内が散らかったり、予期せぬエラーの原因になったりするのを防ぐため、この設定で作成を停止します。- 本番環境では: サーバーの起動速度を最優先するため、この設定を削除して
.pycファイルを作成させる(キャッシュを有効にする)ことが一般的です。
- 本番環境では: サーバーの起動速度を最優先するため、この設定を削除して
ENV PYTHONUNBUFFERED=1: (ログをすぐ出す設定) これを設定しないと、エラーが起きてもログが表示されるまで時間がかかることがあります。- 設定しない方が良い場合: 本番環境などで、極めて大量のログが出るシステムの場合です。その際は、ログをまとめて書き出す(バッファする)方がコンピュータへの負荷が下がるため、この設定を外すことがあります。
【推奨】 .dockerignore ファイルの作成
Dockerfile と同じ階層に .dockerignore という名前のファイルを作成することをおすすめします。これはGitの .gitignore のDocker版のようなもので、Dockerイメージのビルド時にコンテナへ転送したくないファイルを指定します。
ファイル名: .dockerignore
# Git管理ファイル
.git
.gitignore
# 環境変数(絶対にイメージに含めない)
.env
# Pythonキャッシュ
__pycache__
*.pyc
# 仮想環境
venv
env
# IDE設定ファイル
.vscode
.idea
ステップ4:docker-compose.yml の作成と環境変数の管理
ここで、機密情報を管理するための .env ファイルの作成と、docker-compose.yml の設定を行います。
① .env ファイルの作成
プロジェクトのルート(docker-compose.yml と同じ場所)に .env という名前のファイルを作成し、以下の内容を記述します。 ここには、外部に漏れてはいけないパスワードやAPIキーなどを記述します。
ファイル名: .env
# 開発用設定
DEBUG=True
SECRET_KEY=django-insecure-dummy-key-for-dev-only
ALLOWED_HOSTS=*
② docker-compose.yml の作成
.env ファイルを読み込む設定(env_file)を追加した docker-compose.yml を作成します。
ファイル名: docker-compose.yml
version: '3.8'
services:
web:
# 現在のディレクトリ(.)にあるDockerfileを使ってビルドする
build: .
# サーバー起動コマンド。0.0.0.0を指定することで外部(ホスト)からのアクセスを許可する
command: python manage.py runserver 0.0.0.0:8000
# 【重要】環境変数ファイルの読み込み
# .envファイルの内容をコンテナ内の環境変数として展開します
env_file:
- .env
# 【重要】マウント設定
# ホストの ./src を コンテナの /app に同期する
# ホストの ./logs を コンテナの /var/log/django に同期する(ログ永続化)
volumes:
- ./src:/app
- ./logs:/var/log/django
# ポートフォワーディング
# ホストの8000番ポートへのアクセスを、コンテナの8000番へ流す
ports:
- "8000:8000"
解説:
version: '3.8'(バージョンの指定)- Docker Composeファイルの記述形式(構文)のバージョンを指定します。使用するDocker Engineのバージョンによってサポートされる機能が異なるため、明示します。’3.8′ は多くの環境で動く安定したバージョンです。
services:(構成要素の定義)- アプリケーションを動かすために必要な「部品(コンテナ)」を定義するセクションです。Webサーバー、データベース、キャッシュサーバーなどをここに列挙して管理します。
web:(サービス名)- 作成するコンテナにつける名前(IDのようなもの)です。
appやdjangoなど自由に決められます。コマンドで操作する際(例:docker-compose logs web)にこの名前を使用します。
- 作成するコンテナにつける名前(IDのようなもの)です。
env_file: - .env(機密情報の注入)- 役割: 先ほど作成した
.envファイルの中身を読み込み、コンテナ内のOS環境変数としてセットします。 - メリット:
docker-compose.ymlや Pythonコードの中にパスワードを直書きせずに済むため、このYAMLファイルをGitHub等にアップロードしても安全です(.envはアップロードしない前提です)。
- 役割: 先ほど作成した
volumes(データの同期・マウント)./src:/appの意味:- 「自分のPCの
srcフォルダ」と「コンテナ内の/appフォルダ」を魔法のトンネルで繋ぐイメージです。 - これにより、自分のPCでコードを保存すると、瞬時にコンテナ内のコードも書き換わります。コンテナを再起動しなくても変更が反映されるため、開発効率が劇的に上がります(ホットリロード)。
- 「自分のPCの
./logs:/var/log/djangoの意味:- コンテナは削除すると中のデータが消えてしまいますが、ログファイルだけは残したい場合にこの設定を使います。コンテナ内のログ出力先を自分のPCの
logsフォルダに繋げることで、データの永続化を行っています。
- コンテナは削除すると中のデータが消えてしまいますが、ログファイルだけは残したい場合にこの設定を使います。コンテナ内のログ出力先を自分のPCの
ports: - "8000:8000"(ポートフォワーディング)- 役割: コンテナは閉じた箱のようなもので、そのままでは外部(ブラウザ)からアクセスできません。
- 仕組み: 「PCの8000番ポートへのアクセス」を「コンテナの8000番ポート」へ転送(フォワード)する設定です。これにより、ブラウザで
http://localhost:8000と打つと、コンテナ内のDjangoサーバーに繋がるようになります。
command: ... 0.0.0.0:8000- なぜ
0.0.0.0?:localhostで起動するとコンテナ内部からしかアクセスできなくなってしまいます。0.0.0.0を指定することで、「コンテナの外(ホストPC)」からの通信を受け付ける許可を出しています。これはDockerでWebサーバーを立てる際の必須テクニックです。
- なぜ
ステップ5:Djangoプロジェクトの生成コマンド
準備が整いました。Djangoのファイル一式を生成します。Windowsのターミナル(PowerShell推奨)を開き、django-hello フォルダへ移動して、以下のコマンドを実行してください。
docker-compose run --rm web django-admin startproject config .
コマンドの意味:
run: コンテナを一時的に起動してコマンドを実行する。--rm: 実行が終了したら、コンテナを自動削除する(不要なデータを残さない)。web: docker-compose.yml で定義したサービス名。django-admin startproject config .: Djangoのプロジェクト作成コマンド。最後のドット.は「現在のディレクトリ(srcにマウントされている/app)に展開する」という意味で、これがないとフォルダ階層が深くなってしまいます。
実行後、Windowsのエクスプローラーで src フォルダを確認してください。manage.py や config フォルダが生成されていれば成功です。
3. Hello Worldを表示させて開発サイクルを確認する
環境構築は完了しました。ここからは、実際にブラウザに「Hello World」を表示させ、Dockerでの開発フローを確認しましょう。
設定の修正:アクセス許可を与える
生成されたDjangoの設定ファイルは、デフォルトではセキュリティのためにアクセス元を制限しています。Docker経由でアクセスできるよう、設定を変更します。
Windowsのエディタ(VSCodeなど)で src/config/settings.py を開き、28行目付近を修正します。
注意: 現段階ではまだ .env の読み込み設定を行っていないため、まずは値を直接書き換えて動かします。
# src/config/settings.py
# 変更前
ALLOWED_HOSTS = []
# 変更後 (開発環境なので全て許可する)
ALLOWED_HOSTS = ['*']
この修正ができること自体が、マウント機能(volumes)が正常に働いている証拠です。Windowsで編集したファイルが、Dockerコンテナから参照できる状態になっています。
最小構成での記述:urls.pyの編集
本来は「アプリ」を作成して views.py を記述するのがDjangoの基本ですが、今回は動作確認を優先し、ルーティングファイルである urls.py に直接プログラムを記述して手順を簡略化します。
src/config/urls.py を開き、内容を以下のコードで書き換えてください。
# src/config/urls.py
from django.contrib import admin
from django.urls import path
from django.http import HttpResponse
# シンプルなHello World関数
def hello_world(request):
return HttpResponse("<h1>Hello World</h1><p>DockerでDjangoが動いています!</p>")
urlpatterns = [
path('admin/', admin.site.urls),
# トップページにアクセスしたら hello_world 関数を実行
path('', hello_world),
]
サーバーの起動
サーバーを起動します。ターミナルで以下のコマンドを入力してください。
docker-compose up
初回はビルドが行われるため少し時間がかかりますが、2回目以降は短時間で完了します。ログに Starting development server at http://0.0.0.0:8000/ と表示されれば起動完了です。
ブラウザを開き、以下のURLにアクセスしてください。
👉 http://localhost:8000
画面に 「Hello World」 と表示されましたか? これで、Windows上にDjango環境が構築されました。
ホットリロード体験:Dockerの外から修正する
サーバーを起動したまま、エディタに戻って動作を確認してみましょう。 src/config/urls.py のメッセージを書き換えてみます。
return HttpResponse("<h1>Hello Japan!</h1><p>変更が即座に反映されます!</p>")
ファイルを保存(Ctrl+S)し、すぐにブラウザをリロード(F5)してください。 サーバーを再起動していなくても、表示が変わるはずです。
これが 「Dockerの外(Windows)にファイルを配置する」メリット です。コンテナ技術により環境を分離しつつ、開発作業はローカル環境と同じ感覚で行えます。これが、現代のWeb開発で推奨されるスタイルです。
便利なコマンド一覧と終了・再起動方法
開発中によく使うDockerコマンドを一覧にまとめました。
| 目的 | コマンド | 解説 |
|---|---|---|
| 起動 | docker-compose up | ログを表示しながら起動します。開発中はこれが基本です。 |
| 終了 | Ctrl + C | up で起動中にサーバーを停止します。 |
| 完全終了 | docker-compose down | コンテナを停止し、削除します。作業を終える時に使います。 |
| 再起動 | docker-compose restart | コンテナを作り直さず、再起動だけ行います。 |
| 状態確認 | docker-compose ps | 起動中のコンテナ一覧を表示します。「State」が「Up」なら動いています。 |
| ログ確認 | docker-compose logs | コンテナのログを確認します。-fをつけるとリアルタイムで表示します。 |
補足: ターミナルを占有せずにバックグラウンド(裏側)で動かしたい場合は docker-compose up -d を使います。
トラブルシューティング
よくあるエラー:
- ポート競合: 「Port is already allocated」というエラーが出た場合、他のアプリが8000番ポートを使用しています。
docker-compose.ymlのportsを"8080:8000"などに変更して、localhost:8080でアクセスしてみてください。 - ファイルが見つからない:
srcフォルダが空のままdocker-compose upしていませんか? 必ずstartprojectコマンドでファイルを生成してから起動してください。
4. 本番運用を見据えたセキュリティ設定 (.env)
「Hello World」では動くことを優先しましたが、実際の開発では 「機密情報をコードに書かない(ハードコードしない)」 ことが鉄則です。 プロフェッショナルな開発現場で標準的に行われている、環境変数の管理方法を適用してみましょう。
なぜ .env が必要なのか?
Djangoの settings.py には、デフォルトで以下のような記述があります。
SECRET_KEY: 暗号化に使われる重要な鍵。これが漏れるとセキュリティホールになります。DEBUG = True: エラー時に詳細な情報を表示する機能。便利ですが、機密情報まで表示してしまうため、本番環境では絶対に False にする必要があります。
これらをソースコードに直接書いたままGitHubなどにアップロードしてしまうと、世界中に鍵を公開することになります。これを防ぐために、ステップ4で作成した .env ファイルを使います。
settings.py の書き換え
docker-compose の env_file 設定のおかげで、Pythonからは os.getenv を使って .env の値を読み取ることができます。 src/config/settings.py を開き、以下のように修正してください。必ず import os を追加するのを忘れないでください。
from pathlib import Path
import os # 【重要】追加
# ... (中略) ...
# 修正前: シークレットキーが直書きされている
# SECRET_KEY = 'django-insecure-xxxxx...'
# 修正後: 環境変数から読み込む (なければデフォルト値を使うかエラーにする)
SECRET_KEY = os.getenv('SECRET_KEY', 'django-insecure-dummy-key-for-dev-only')
# 修正前
# DEBUG = True
# 修正後: 文字列の 'True' かどうかで判定
DEBUG = os.getenv('DEBUG') == 'True'
# 修正前
# ALLOWED_HOSTS = []
# 修正後: カンマ区切りでリスト化
ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', '*').split(',')
.env は Git にコミットしない
最も重要な点です。.env ファイルには本物のパスワードや鍵が含まれるため、Gitの管理から除外する必要があります。 プロジェクトルートに .gitignore ファイルを作成し、以下を追記してください。
ファイル名: .gitignore
.env
__pycache__/
*.pyc
db.sqlite3
これで、コード(settings.py)には「環境変数を読むロジック」だけが残り、秘密の情報(.env)はあなたのPCだけにある状態を作ることができます。
5. Pythonライブラリを追加する手順
開発が進むと、画像処理のために Pillow を入れたり、外部データを取得するために requests を入れたりする必要が出てきます。Docker環境でライブラリを追加する際の正しい手順を解説します。
手順1: requirements.txt の追記
まず、ホスト側(Windows)にある requirements.txt に、追加したいライブラリ名を記述します。
例: requestsを追加する場合
Django>=4.2
requests
手順2: コンテナの再ビルド
docker-compose.yml で設定したファイルの同期(volumes)は、ライブラリのインストール場所には適用されません。そのため、Dockerfile の内容を再度実行して、新しいライブラリが含まれたイメージを作り直す必要があります。
ターミナルで一度サーバーを停止(Ctrl+C)し、以下のコマンドを実行します。
docker-compose build
これにより、更新された requirements.txt を読み込んで、新しいライブラリがインストールされます。
手順3: 再起動
ビルドが完了したら、通常通り起動します。
docker-compose up
これで、追加したライブラリがDjangoから利用できるようになります。
【解説】なぜ直接 pip install してはいけないのか?
「コンテナの中に入って pip install requests と打てば動くのでは?」と思った方は鋭いです。確かにその場では動きます。しかし、Docker開発ではこの方法は非推奨です。理由は以下の2点です。
- コンテナは「使い捨て」だから Dockerコンテナは、
docker-compose downなどで削除されると、その内部に加えられた変更(インストールしたライブラリなど)は全て消え去ります。次回起動時には元のイメージから真っさらな状態で立ち上がるため、「昨日入れたはずのライブラリがない!」という事態になります。 - 「環境の再現性」が失われるから Dockerの強みは「
docker-compose upだけで誰でも同じ環境が作れること」です。手動コマンドでライブラリを入れる運用にしてしまうと、他のメンバーのPCや本番環境ではそのライブラリが入っていない状態になり、エラーの原因になります。
結論: 一時的な動作確認のために pip install をするのはOKですが、本格的に使うことが決まったら、必ず requirements.txt に追記して再ビルド(build)する習慣をつけましょう。
補足:コンテナ内での操作(docker-compose exec)の正しい使い道
「コンテナの中に入る」こと自体は、開発において頻繁に行います。そのためのコマンドが docker-compose exec です。
使い方:
# コンテナの中に入って操作する場合 (抜けるときは exit)
docker-compose exec web bash
# または単発でコマンドを実行する場合
docker-compose exec web python manage.py migrate
使うべき状況: ライブラリのインストール(永続化が必要な変更)には使いませんが、以下のような**「状態の変更」や「調査」**には必須のコマンドです。
- Django管理コマンドの実行 データベースのマイグレーション(
migrate)や、管理ユーザーの作成(createsuperuser)など。 - デバッグ・調査 「ログファイルが正しく生成されているか?」「生成された画像ファイルは存在するか?」などを直接確認する場合。
- 一時的な動作確認 「このライブラリを入れたら動くかな?」と、
requirements.txtに書く前に少し試したい場合(確認後はコンテナを破棄すれば元通りになるので便利です)。
6. ログの確認と永続化(ファイル出力)
Dockerでは、標準出力(コンソールに出るログ)はコンテナが削除されると消えてしまう場合があります。 開発中や本番運用でログを確実に残すために、「標準出力」と「ファイル」の両方にログを記録する設定を行いましょう。
手順1: settings.py の修正
src/config/settings.py の末尾に、以下の LOGGING 設定を追加してください。 これにより、コンソールへの出力に加えて、/var/log/django/django.log というファイルにもログが書き込まれるようになります。
# src/config/settings.py の末尾に追加
# ログ出力ディレクトリの作成(念のためPython側でも確認)
import os
LOG_DIR = '/var/log/django'
if not os.path.exists(LOG_DIR):
try:
os.makedirs(LOG_DIR, exist_ok=True)
except PermissionError:
pass # Dockerfileで作成済みのはずだが、権限エラーなら無視(標準出力のみになる)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {message}',
'style': '{',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
'file': {
'class': 'logging.FileHandler',
'filename': os.path.join(LOG_DIR, 'django.log'),
'formatter': 'verbose',
'encoding': 'utf-8',
},
},
'root': {
'handlers': ['console', 'file'],
'level': 'INFO',
},
'loggers': {
'django': {
'handlers': ['console', 'file'],
'level': 'INFO',
'propagate': False,
},
},
}
手順2: ログフォルダの確認
前述の docker-compose.yml に追加した以下の設定により、ログファイルはWindows側にも同期されます。
volumes:
- ./logs:/var/log/django
サーバーを起動(docker-compose up)すると、プロジェクトフォルダ内の logs フォルダの中に django.log が生成されます。このファイルはコンテナを削除しても消えません。
まとめ:ここからWeb開発が始まります
今回は、Windows環境におけるDockerを使ったDjango開発環境の構築方法について、以下の6点を通して解説しました。
- Dockerを使う意義(環境への影響を抑える・統一できる)
- 具体的な構築手順(Dockerfile・Compose・マウント設定・セキュリティ対策)
- 環境変数の管理(.envによる機密情報の保護)
- 実際の動作確認(Hello Worldとホットリロード)
- ライブラリの追加手順(requirements.txtと再ビルド)
- ログの管理と永続化(標準出力とファイル出力)
この環境があれば、データベース(PostgreSQLやMySQL)を追加する場合も、docker-compose.yml に設定を追記するだけで対応可能です。インストーラーを探したり、パス設定に悩んだりする必要はありません。
「環境構築」はゴールではありません。開発のスタートラインです。 Dockerというツールを活用することで、本来の目的である「アプリケーション開発」に集中できるようになります。
エディタを開いて、Djangoアプリケーションの作成を始めましょう。



