Docker上にDjango開発用コンテナを作成する方法。駆け出しエンジニア向けのため本番利用不可。

本記事ではDjangoを学ぶ人向けの開発環境・検証環境用としてDocker上にDjangoのコンテナを作成する方法を紹介します。

本記事が完了しましたら、ぜひ以下の超入門書を試してみてください。

Djangoの超初心者向け入門書

Djangoの最強入門書!手を動かしながらブログアプリ(CMS)を作成して脱初心者しよう!

なお本記事ではDjangoでは本番利用することを想定していないため、Webのリクエストは組み込みサーバーで処理を行い、データベースはSQLiteで行います。

目次

Dockerのインストール

Dockerのインストール手順は以下に別リンクで用意していますので自信の環境に合わせて実施してください。

Docker上にDjangoの開発環境を準備

Djangoのコンテナファイルとプロジェクトは以下が完成図になります。

root/
 ├ deployments/
 │ └ docker-compose
 │   ├ .env
 │   ├ docker-compose.yml
 │   ├ Dockerfile
 │   └ requirements.txt
 │
 ├ project
 │ ├ __init__.py
 │ ├ asgi.py
 │ ├ urls.py
 │ └ wsgi.py
 │
 ├ .gitignore
 ├ manage.py
 └ README.md

まずはdeployments/docker-compose/Dockerfileを作成します。

FROM python:3.9
ENV PYTHONUNBUFFERED 1

RUN mkdir -p /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

次にdeployments/docker-compose/requirements.txtを準備します。DjangoとPillowを準備します。

Django==4.0
Pillow==8.4.0

次にdeployments/docker-compose/docker-compose.ymlを作成します。WebサーバやDBを用意せず組み込みサーバーを利用します。

version: '3'

services:
  python3:
    build:
      context: ./
      dockerfile: ./Dockerfile
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ../../.:/code
    environment:
      PYTHONPATH: /code
      LANGUAGE: "${LANGUAGE}"
      TIMEZONE: "${TIMEZONE}"
    ports:
      - "8000:8000"

次にdeployments/docker-compose/.envを作成します。今回は日本語設定のみ適用します。

LANGUAGE=ja
TIMEZONE=Asia/Tokyo

全ての準備ができましたらプロジェクトファイルを作成します。

cd deployments/docker-compose
docker-compose run python3 django-admin startproject project .

これでプロジェクトファイルの作成の作成まで完了しました。

Djangoのアプリ作成と起動および停止方法

この章ではアプリの作成と起動・停止方法を紹介します。

今回はblogアプリを作成します。以下が最終完成形になります。

root/
 ├ deployments/
 │ └ docker-compose
 │   ├ .env
 │   ├ docker-compose.yml
 │   ├ Dockerfile
 │   └ requirements.txt
 │
 ├ blog # ★ここにアプリを追加
 │ ├ __init__.py
 │ ├ admin.py
 │ ├ apps.py
 │ ├ models.py
 │ ├ tests.py
 │ └ views.py
 │
 ├ project
 │ ├ __init__.py
 │ ├ asgi.py
 │ ├ urls.py
 │ └ wsgi.py
 │
 ├ .gitignore
 ├ manage.py
 └ README.md

アプリの作成コマンドは以下になります。

cd deployments/docker-compose 
docker-compose run python3 python manage.py startapp blog

これでアプリの作成まで完了しました。

以下が起動コマンドになります。

cd deployments/docker-compose 
docker-compose up  

以下のようになれば起動しています。localhost:8000にブラウザでアクセスしてみましょう。

Starting docker-compose_python3_1 ... done
Attaching to docker-compose_python3_1
python3_1  | Watching for file changes with StatReloader
python3_1  | Performing system checks...
python3_1  | 
python3_1  | System check identified no issues (0 silenced).
python3_1  | 
python3_1  | You have 20 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, blog, contenttypes, sessions.
python3_1  | Run 'python manage.py migrate' to apply them.
python3_1  | January 02, 2022 - 03:42:03
python3_1  | Django version 4.0, using settings 'project.settings'
python3_1  | Starting development server at http://0.0.0.0:8000/
python3_1  | Quit the server with CONTROL-C.

停止はコマンドになります。

cd deployments/docker-compose 
docker-compose down

こちらが完了したらぜひDjango入門書も確認してみてください。

Djangoの超初心者向け入門書

Djangoの最強入門書!手を動かしながらブログアプリ(CMS)を作成して脱初心者しよう!

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次