本記事では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の超初心者向け入門書