DockerでDjangoの環境構築

はじめまして、株式会社アドグローブ ソリューション第二事業部の石塚です。

今回は、3年ほどLaravelの開発経験を積んだ私がDockerを使ってPythonのフレームワークであるDjangoをインストールする方法をお話します。

はじめに

私が普段開発で使用しているLaravelは、ユーザー数が多くコミュニティも活発なため、定期的なバージョンアップや様々なトピックが投稿されています。公式のドキュメントもわかりやすく、とても開発がし易いフレームワークです。

しかし、近年Pythonの人気が上昇しており話題になることが多く、興味が湧きました。
pythonを調べていく中でデータサイエンスや機械学習などの分野で使われていること、様々なフレームワークが存在していることを知りました。
私自身データサイエンスや機械学習などは専門外の分野なので、WebアプリケーションフレームワークであるDjangoを学習しようとと思い立ったのが今回の経緯となります。

ところで、皆さん開発用のマシンは何を使われているでしょうか?
Macを利用している方は、pythonが元からインストールされているかと思われますが、
Macにプリインストールされているpythonはバージョンが古く、開発要件を満たせない場合があります。
今回解説する内容はDockerを利用して開発環境の構築を行うので、マシンやOSに左右されることなく手軽に環境を再現することができるというメリットもあります。
気になった方は是非こちらの記事を参考にDjangoを試していただけると嬉しいです。

それでは、構築の手順を追っていきます。

1. プロジェクトフォルダを作成

任意の場所にプロジェクトフォルダを作成してください。
今回はcodeフォルダとしました。


2. Dockerfileを作成

codeフォルダ内にDockerfileファイルを作成します。
下記はDockerfileの記述例です。

FROM python:3.9-buster
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/


3. requirements.txtの作成

codeフォルダ内にrequirements.txtを作成します。
下記はrequirements.txtの記述例です。

Django>=1.8,<2.0
psycopg2


4. docker-compose.ymlを作成

codeフォルダ内にdocker-compose.ymlを作成します。
下記はdocker-compose.ymlの記述例です。

version: '3'

services:
  db:
    image: postgres
    environment:
      POSTGRES_DB: "db"
      POSTGRES_HOST_AUTH_METHOD: "trust"
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db


5. Djangoプロジェクトの生成

ターミナルでcodeフォルダへ移動し、Djangoプロジェクトの生成コマンドを実行します。

docker-compose run web django-admin.py startproject composeexample .


6. DB情報の更新

code/composeexample/settings.pyを開き、DATABASESの設定をsqlite3からpostgresの情報に変更します。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}


7. docker-compose upの実行

ターミナルでcodeフォルダへ移動し、docker-compose upを実行します。

docker-compose up


8. 起動確認

下記ローカルホストのURLへアクセスし、DjangoのWelcome ページが表示されれば成功です。

http://localhost:8000

welcomeページ

以上で、環境構築完了です。
Dockerを利用することで、環境構築の手間を軽減し、他の開発者との共有やデプロイも容易になりますので是非活用してみてください。

最後までご覧いただきありがとうございました!


現在アドグローブでは、さまざまなポジションで一緒に働く仲間を募集しています。
詳細については下記からご確認ください。みなさまからのご応募お待ちしております。
hrmos.co