このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:開発環境コンテナ:Django+PostgrSQL①

🐍 開発環境コンテナ:Django+PostgreSQL①
ここでは Docker Compose を使って、Python製Webフレームワーク「Django」とデータベース「PostgreSQL」を組み合わせた開発環境を構築していきます。
本記事は2部構成のうちの第1部として、主に Dockerfile と compose.yaml の作成を中心に解説します。
ここで学ぶ内容

💡 Djangoとは?

Django(ジャンゴ) は、Pythonで作られたWebアプリケーションフレームワークです。
シンプルで高速な開発が可能で、Webアプリケーションの開発を効率化する強力な仕組みがたくさん用意されています。
| 項目 | 説明 |
|---|---|
| フレームワークの種類 | フルスタックWebフレームワーク |
| 開発言語 | Python |
| 採用アーキテクチャ | MTV(Model-Template-View) |
| 主な特徴 | コードの再利用性が高く、セキュリティ機能が標準装備 |
| 公式サイト | https://www.djangoproject.com/ |
💬 ポイント
Djangoは「MTVアーキテクチャ」を採用しています。
- Model:データベース構造を定義する部分
- Template:ユーザーに見せるHTMLを扱う部分
- View:アプリのロジックを担当する部分
これにより、アプリ全体を分かりやすく整理して開発できます。
URL:https://www.djangoproject.com/

🐘 PostgreSQLとは?

PostgreSQL(ポストグレスキューエル) は、世界的に利用されている高性能なオープンソースのデータベース管理システムです。
大規模システムや商用サービスでも多く採用されています。
| 項目 | 内容 |
|---|---|
| 種類 | リレーショナルデータベース(RDBMS) |
| 開発起源 | カリフォルニア大学バークレー校の「Postgres」プロジェクト |
| 特徴 | ACID準拠・トランザクション処理・拡張性・高信頼性 |
| 公式サイト | https://www.postgresql.org/ |
🧩 Djangoコンテナを作る準備
Docker Hubには古いDjangoの公式イメージが存在しますが、
今回は最新環境を使いたいので、Pythonイメージをベースに自作のDjangoイメージを構築します。
構築する開発環境コンテナの全体像は下図のとおりです。

ベースとするのは python:3.10。
その上で以下をインストールしていきます。
Pythonイメージだけでは、Djangoは実行できません。Pythonイメージに以下をインストールしてDjangoイメージを作成します。
| 目的 | コマンド |
|---|---|
| Djangoのインストール | pip install Django |
| PostgreSQL接続用ライブラリ | pip install psycopg2-binary |
これらを自動でセットアップするために、Dockerfileを定義します。
オリジナルイメージを使用するにはDockerfileを定義する必要があります。
🧹 作業前のクリーンアップ
まずは、以前のコンテナや不要なイメージを整理しておきましょう。
古いデータが残っていると、構築時に思わぬエラーが起きることがあります。
docker system prune -a --volumes| オプション | 説明 |
|---|---|
| -a | 使用していないコンテナ・イメージ・ネットワークを削除 |
| --volumes | 使用していないボリュームも削除 |
💬 ポイント
Docker Desktopを使えば、GUIで視覚的に削除することも可能です。
コマンドに慣れていない方は、こちらを使うのもおすすめです!
実行結果
PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all anonymous volumes 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 Composeでは、デフォルトでカレントディレクトリ内の「compose.yaml」ファイルを読み込みます。
そのため、まず作業用フォルダを作成します。
cd desktop/docker
mkdir django1
cd django1実行結果
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir django1
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025/10/17 1:32 django1
PS C:\Users\joeac\Desktop\docker> cd django1
PS C:\Users\joeac\Desktop\docker\django1>🧱 Dockerfileの作成
次に、Djangoの実行環境となる オリジナルイメージ を作ります。
Djangoの公式イメージは古いため、Pythonのベースイメージから構築します。
Dockerfileを作成します。
code DockerfileVSCodeが起動したら、以下の内容を入力して保存します👇
FROM python:3.10
WORKDIR /code
ADD requirements.txt /code
RUN pip install -r requirements.txt
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]各項目の説明
| 設定項目 | 説明 |
|---|---|
| FROM python:3.10 | Python 3.10の公式イメージをベースに使用。 |
| WORKDIR /code | 作業ディレクトリを /code に設定。 |
| ADD requirements.txt /code | 依存関係を記したファイルをコピー。 |
| RUN pip install -r requirements.txt | 指定されたPythonパッケージをインストール。 |
| CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] | Django開発サーバーを起動するコマンド。 |
💬 ポイント
DjangoはPythonのパッケージとして提供されているため、pip install で導入できます。
また、依存ライブラリは「requirements.txt」にまとめることで再利用性が高まります。
📦 requirements.txtの作成
続いて、DjangoとPostgreSQL接続用のライブラリを指定します。
code requirements.txt記述内容
Django==4.0.2
psycopg2-binary| パッケージ名 | 説明 |
|---|---|
| Django | Webアプリケーションフレームワーク本体 |
| psycopg2-binary | DjangoからPostgreSQLに接続するためのドライバ |
⚙️ compose.yamlの作成
最後に、DjangoとPostgreSQLを連携させる設定ファイル「compose.yaml」を作成します。
code compose.yaml記述内容
services:
postgres:
image: postgres:14.2
container_name: postgres_container
environment:
POSTGRES_DB: test-db
POSTGRES_USER: test-user
POSTGRES_PASSWORD: test-pass
volumes:
- db-data:/var/lib/postgresql/data
django:
build: .
container_name: django_container
depends_on:
- postgres
ports:
- "8000:8000"
volumes:
- .:/code
volumes:
db-data:🔍 設定内容の詳細解説
| 項目 | 説明 |
|---|---|
| services | ここに定義された各コンテナがComposeでまとめて起動されます。 |
| postgres | PostgreSQLのデータベースサービス定義。 |
| image | 使用するDockerイメージ(postgres:14.2)。 |
| environment | 環境変数で初期DB名やユーザーを設定。 |
| volumes | データを永続化するためのストレージ指定。 |
| django | Djangoアプリケーションのサービス定義。 |
| build | カレントディレクトリのDockerfileからイメージをビルド。 |
| depends_on | PostgreSQLが先に起動するように依存関係を設定。 |
| ports | Djangoの開発サーバーをホストの8000番ポートで公開。 |
| volumes | ローカルのプロジェクトフォルダをコンテナ内の /code にマウント。 |
💬 ポイント
- Djangoのコードはリアルタイムで反映されるようにホスト側をマウントしています。
- PostgreSQLのデータは永続化ボリューム
db-dataに保存されるため、再起動しても消えません。
🚀 次のステップへ
ここまでで、DjangoとPostgreSQLが動作する環境の基礎構成ができました。
次回の「開発環境コンテナ:Django+PostgreSQL②」では、
実際に Djangoプロジェクトを作成してアプリを起動 していきます。
💬 まとめ
| ステップ | 内容 |
|---|---|
| 1️⃣ | docker system prune -a --volumes で環境をクリーンにする |
| 2️⃣ | Dockerfile を作成して Django 実行環境を定義 |
| 3️⃣ | requirements.txt に必要なライブラリを指定 |
| 4️⃣ | compose.yaml で Django と PostgreSQL の連携設定 |
| 5️⃣ | 次回、Djangoプロジェクトを起動して動作確認! |
💡 Docker Composeを使えば、Django+PostgreSQLの開発環境を数分で構築可能!
手作業のセットアップに比べて格段にスムーズです✨
