Dockerを使ってDjango + Postgresの開発環境を作成する

Dockerを使って、PythonのフレームワークであるDjangoとデータベースにPostgresを使う場合の開発環境を作る手順についてご紹介します。

Dockerfileの作成

Dockerを使って開発環境を作るときには、まずはDockerfileというDockerイメージを作成する手順を指示するための仕様書を作成します。このDockerfileに記載した内容をもとにしてDockeイメージをビルドする形になるので、今回のケースではPythonのベースイメージを使って書いていきます。

FROM python
ENV PYTHONUNBUFFERED=1

# プロジェクトフォルダ作成
RUN mkdir /code
# ワークディレクトリの設定
WORKDIR /code
COPY requirements.txt /code/

# requirements.txtに指定されているパッケージを追加
RUN pip install -r requirements.txt

COPY . /code/

requirements.txtファイルの作成

Pythonプロジェクトで必要となるパッケージとそのバージョンを記述するファイルが requirements.txt というファイルです。要するに、『pip install』コマンドでインストールする必要のあるパッケージをまとめて書いておくファイルだということです。

今回は最初に以下のパッケージをインストールしておきます。

Django==4.2
django-environ
Pillow
psycopg==3.1.12

Dockerfileの記載を改めて見てもらうと、requirements.txt からインストールしようとしている箇所がありますよね。その命令で、requirements.txt に記載したPythonパッケージをインストールしていく形です。

docker-compose.yml ファイルの作成

Docker Composeという複数のコンテナを定義して、それらを連動して起動させる場合に使うツールのための定義ファイルが『docker-compose.yml』というファイルです。

以下のサンプルのようにYAML形式で記載していきます。

version: "3.8"

services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Dockerイメージのビルド

Docker関連のファイルの作成ができたら、ここで一旦Dockerイメージを作成しておきます。以下のコマンドでDockerfileからビルドできます。

docker-compose build

Djangoのプロジェクト作成

ビルドが正常に完了すると、Djangoが入った状態になっているので、Djangoプロジェクトを作成します。以下のコマンドで作成できます。ちなみに、文末のピリオドはコマンドを打つディレクトリ直下にプロジェクトフォルダを作成するという意味になります。

docker-compose run web django-admin startproject プロジェクト名 .

Djangoアプリの作成

開発環境の構築の手順としては最後になりますが、Djangoのアプリを作成します。

docker-compose run web python3 manage.py startapp アプリ名

開発環境が構築できたか確認

ここまでエラー等なく正常に進めることができたら、一旦は開発をスタートできる状態になっているはずなので、うまく環境構築できているかを確認しましょう。

まずはDocker経由でローカルサーバーを起動します。

docker-compose up

localhostのポート8000で起動しているので、ブラウザのアドレスバーに『localhost:8000』を入力して以下の画面が表示されていたら完了となります。

おすすめの記事