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

Docker超入門:開発環境コンテナ:Django+PostgrSQL①


🐍 開発環境コンテナ:Django+PostgreSQL①

 ここでは Docker Compose を使って、Python製Webフレームワーク「Django」とデータベース「PostgreSQL」を組み合わせた開発環境を構築していきます。
本記事は2部構成のうちの第1部として、主に Dockerfilecompose.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 Dockerfile

VSCodeが起動したら、以下の内容を入力して保存します👇

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.10Python 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
パッケージ名説明
DjangoWebアプリケーションフレームワーク本体
psycopg2-binaryDjangoから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でまとめて起動されます。
postgresPostgreSQLのデータベースサービス定義。
image使用するDockerイメージ(postgres:14.2)。
environment環境変数で初期DB名やユーザーを設定。
volumesデータを永続化するためのストレージ指定。
djangoDjangoアプリケーションのサービス定義。
buildカレントディレクトリのDockerfileからイメージをビルド。
depends_onPostgreSQLが先に起動するように依存関係を設定。
portsDjangoの開発サーバーをホストの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の開発環境を数分で構築可能!
手作業のセットアップに比べて格段にスムーズです✨