【Django】Dockerを使ってDjangoの開発環境をつくろう

Dockerを用いたDjangoの開発環境を作成する方法をまとめます。
Docker×Djangoでの開発を考えている方、Djangoの勉強を始めたい方など、よかったら参考にしてください。
Python仮想環境を用いた開発環境と比べると、起動が楽(コマンドひとつ)他の人に配布できる開発者間で環境を合わせれる、などメリットが多いので、Dockerでの開発がおすすめです。

手順

手順は、次の通りです。
※今回はDBの設定は行わないので、DBはDjango標準のSQLiteとなります

  1. Django用フォルダを作成
  2. Docker用ファイルを作成
  3. コンテナを起動&コンテナの中に入る
  4. コンテナの中でDjangoプロジェクト作成
  5. Visual Studio Codeをコンテナに接続して開く
  6. settings.pyを編集
  7. 開発用サーバー(runserver)を起動

なお、Docker関連はこちらのドキュメントを参考にしました。

1)Django用フォルダを作成

任意の場所に「作業フォルダ」を作成し、さらに作業フォルダの中にDjangoプロジェクト用フォルダを作成します。
今回は作業フォルダを「my_work」、Djangoプロジェクト用フォルダを「my_project」としました

2)Docker用ファイルを作成

1で作成した「作業フォルダ」の下に、Docker用ファイル(Dockerfiledocker-compose.yml)を作成します。

それぞれのファイルの内容は次の通りです。

Dockerfileです。拡張子は不要です。

Dockerfile
FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /work
RUN pip install --upgrade pip
RUN pip install \
    Django
COPY . /work/

docker-compose.ymlです。
コンテナ内の「work」フォルダを、作業フォルダにマウントしています。

docker-compose.yml
version: "3.9"

services:
  web:
    build: .
    command: python ./my_project/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/work
    ports:
      - "8000:8000"

※6行目commandの「my_project」の部分は、1で作成した「Djangoプロジェクト用フォルダ」です

3)コンテナを起動&コンテナの中に入る

ターミナルで、カレントディレクトリを「作業フォルダにし、次のコマンドを実行してください。

Bash
cd my_work
docker compose run --rm web bash
参考:コマンドを実行したキャプチャ

4)コンテナの中でDjangoプロジェクト作成

次にコンテナの中でDjangoプロジェクトを作成します。
ターミナルで、カレントディレクトリを「Djangoプロジェクト用フォルダにし、次のコマンドを実行してください。

Bash
cd my_project
django-admin startproject config .

Djangoプロジェクトの作成が成功すると「config」フォルダと「manage.py」が作成されます。

参考:コマンドを実行したキャプチャ

5)Visual Studio Codeをコンテナに接続して開く

今回のDjangoプロジェクトのように、コンテナの中で作成したフォルダやファイルはroot権限になってしまうので、ホストPC(コンテナの外)で編集・上書きしようとすると「アクセス権が不十分です」とエラーメッセージが表示されてしまいます。sudoを権限を使えば上書きできるのですが、毎回メッセージが表示されてしまうので、Visual Studio Codeをコンテナに接続して編集できるようにします。

コンテナの中でVisual Studio Codeを開くには、拡張機能:Dev Containersを使います。
Dev Containersのインストールと使い方は、こちらを参考にしてください。

フォルダを開く際は「work」フォルダを選択してください。

6)settings.pyを編集

このまま、次の手順を実行するとブラウザで表示できないことがあるので、「config」フォルダ内のsettings.pyを編集します。ALLOWED_HOSTSの記載がある箇所を次のように編集してください

config/settings.py
ALLOWED_HOSTS = ['*']

ただし、この設定は本番環境では安全ではないので注意してください。

7)開発用サーバー(runserver)を起動

最後にコンテナの中で、開発用サーバー(runserver)を起動します。
ターミナルで、カレントディレクトリを「Djangoプロジェクト用フォルダ(manage.pyがあるフォルダ)」にし、次のコマンドを実行してください。

Bash
cd my_project
python manage.py runserver 0.0.0.0:8000
参考:コマンドを実行したキャプチャ

ブラウザで 「http://0.0.0.0:8000」と入力し、Djangoデフォルト画面(ロケットが飛んでいる絵)が表示されればOKです。

ここまで確認できたら、ターミナルで「Ctrl + c」と入力して開発用サーバーを落とし、コンテナを抜けます。
コンテナを抜けるコマンドは「exitです。

2回目以降の起動

2回目以降はカレントディレクトリを作業フォルダにし、次のコマンドを実行するだけで、コンテナの起動〜開発用サーバー(runserver)の起動まで実行されます。

Bash
cd my_work
docker compose up

コマンド実行後は、ブラウザで http://0.0.0.0:8000/と入力すれば、Djangoの画面が表示されます。
開発は、手順5と6で行ったようにVSCodeをコンテナに接続して編集するのがよいかと思います。

参考:コマンドを実行したキャプチャ
【Django】Python仮想環境でDjangoの開発環境をつくろう(Linux編 ) 【Django】Python仮想環境でDjangoの開発環境をつくろう(Windows編 )

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA