Web開発

DockerでDjangoローカル開発環境を爆速構築

更新日:

こんにちは、ケースケ(@keisuke555_eng)です!

フリーランスのWebエンジニアとして活動しています。

先日、最近流行りの超便利な仮想化技術であるDockerの機能を使ってWordPressのローカル開発環境を構築する手順を解説した記事を投稿しました。

今回はシリーズ続編として、Dockerを使ってDjango(PythonのWebフレームワーク)開発環境を構築する手順をご紹介します。

今回作成するDjango開発環境

今回もDocker-docs-jaクイックスタート:ComposeとDjangoを参考に作業していきます!

※ちなみに、上記のクイックスタートの通りに実行していくと、途中でエラーになっちゃうみたいです。

どうやら環境変数まわりの設定が不足しているだけのようなので、今回の手順ではエラーしないように不足箇所を補足して紹介しています。

参考元の構成はこんな感じ↓

開発言語Python3
WebフレームワークDjango1.8〜2.0
DBPostgreSQL

これを踏まえつつ、Djangoを最新化した構成で構築してみます。

今回の構成はコレ↓

開発言語Python3
WebフレームワークDjango3.1
DBPostgreSQL

それではさっそく手順をご紹介します!

DockerでDjango開発環境を構築する手順

DockerでDjango開発環境を構築する手順は、以下のとおりです。

  1. プロジェクト用の空ディレクトリを作成
  2. Dockerfileを作成
  3. requirements.txtを作成
  4. docker-compose.ymlを作成
  5. Djangoプロジェクトの生成
  6. DBへの接続設定
  7. docker-composeでコンテナ起動
  8. 動作確認

手順①:プロジェクト用の空ディレクトリを作成

好きなディレクトリ上で、今回Django環境を作成するための空ディレクトリを新規作成します。

僕は「django」というディレクトリを作成し、cdコマンドでdjangoディレクトリへ移動しておきました。

手順②:Dockerfileを作成

手順①で作成したディレクトリ上に、Dockerfileを作成します。

Dockerfileの中の記述は以下のとおりです。

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

python:3のイメージをベースとして、Django環境を作成していきます。

手順③:requirements.txtを作成

同じディレクトリ内に、requirements.txtというテキストファイルを作成します。

これはDockerfile内に記述してあるファイルですが、このテキストファイル内に記述してあるソフトを仮想環境内にインストールしていくことになります。

記述内容は以下のとおりです。

Django>=3.1
psycopg2

今回は、Djangoのver3.1とpythonからPostgreSQLに接続するためのドライバ「psycopg2」をインストールします。

手順④:docker-compose.ymlを作成

続いてdocker-compose.ymlを作成します。

記述内容は以下のとおりです。

version: '3'
services:
  db:
    image: postgres
    ports:
      - "5432:5432"
    volumes:
      - ./db_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

DBはPostgreSQL、db_dataというディレクトリが自動作成され、DBのデータが格納されます。

Webの方は起動時のコマンドで下記コマンドを実行、作業ディレクトリ直下にソースプログラム一式が格納される形となります。

python3 manage.py runserver 0.0.0.0:8000

このコマンドの意味としては、「pythonのver3を実行、ソースはmanage.pyというpythonのプログラムファイルで、8000番ポートでサーバーを起動してね」といった感じです。

※「8000」と書いてある箇所をお好きな数字に変えると、受付ポートを変更することも可能です。

手順⑤:Djangoプロジェクトの生成

続いて、ディレクトリ内にDjangoプロジェクトを作成していきます。

具体的には、以下のコマンドを実行してください。

docker-compose run web django-admin.py startproject [作成するプロジェクト名] .

※最後の「.(ドット)」を忘れがちなので注意

実行結果はこんな感じです。

VSCodeの左バーの部分、ディレクトリ構成を見てみると、DBデータが格納されているdb_dataフォルダとプロジェクトファイルが格納されているsampleフォルダが作成されているのが確認できます。

手順⑥:DBへの接続設定

作成したDjangoプロジェクトの設定ファイルを編集して、DBへの接続設定を行います。

プロジェクトフォルダ内にあるsettings.pyのDATABASESに関する記述を以下のように編集します。

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

docker-compose.ymlで設定した内容と合わせてください。

これで下準備は完了しました!

手順⑦:docker-composeでコンテナ起動

いよいよコンテナ起動します。

docker-compose.ymlを格納しているディレクトリ上で以下コマンドを実行してください。

docker-compose up

実行結果はこんな感じです。

ログが出力されます

今回は「-d」を付けずにupコマンドを実行したので、サーバーのログがズラッとコンソールに出力されています。

手順⑧:動作確認

ブラウザを起動して、localhost:8000でアクセスしてみると…

Djangoプロジェクトのスタートページ!

無事、Djangoのスタートページが表示されました!

これで開発環境の構築が完了です。

あとは思う存分、中身の開発を進めていって下さい。

まとめ

PCにアレコレと直接インストールすることもなく、仮想環境でDjangoの開発環境を構築することができました!

Dockerは今やWeb系開発の現場では常識となりつつある技術なので、使えるようになっておいて損はないと思います。

Web開発に挑戦する人の最初のお悩みが環境構築のややこしさだと思います。

僕も新入社員時代、先輩から依頼された環境構築がうまくいかず、結局まる1日かかって死にそうになっていた経験があります。

大切なのは開発環境構築の達人になることではなく、必要な機能を実装するプログラミング技術や設計技術を身につけることですので、なるべく開発環境構築でつまづく方が減ってくれればと願っています。

今回の記事が少しでも、読んでくださった方の参考になれば幸いです。

次回はRuby on Railsに挑戦しようかと考えていますので、お楽しみに。

それでは、また。

-Web開発
-, , , , ,

Copyright© みちのくBASE , 2021 All Rights Reserved