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』を入力して以下の画面が表示されていたら完了となります。