Docker上でDjangoの開発を行う手順

この記事ではDjangoプロジェクトをDocker上で動かすための手順を紹介します。
作業の流れは以下のとおりです。

  1. Djangoプロジェクトを作成して動かす
  2. Dockerfileを作成する
  3. buildコマンドを実行する
  4. docker-compose.ymlファイルを作成する
  5. docker-compose upでDockerコンテナを起動する

順番に作業をみていきましょう。

Djangoプロジェクトを作成する

Django用のディレクトリを作り、移動します。
移動先でdjangoをインストールし、仮想環境を有効化します。

% mkdir hello; cd hello
% pipenv install django==3.0.1
% pipenv shell

Djangoプロジェクトを作り、マイグレーションを行います。
runserverコマンドでサーバーを起動すると、Djangoのウェルカム画面が開きます。

% django-admin startproject hello_project .
% python manage.py migrate
% python manage.py runserver

Djangoのプロジェクトの中にDjangoアプリケーションを作ります。
Djangoアプリケーションはstartappコマンドで作れます。

% python manage.py startapp pages

次にDjangoプロジェクトのsettings.pyを編集し、作成したDjangoアプリケーションをインストールします。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pages.urls')),
]

Djangoアプリケーションのviews.pyを編集します。

from django.http import HttpResponse

def home_page_view(request):
  return HttpResponse('Hello, World!')

次にDjangoアプリケーション以下にurls.pyファイルを作り、以下のように書きます。

from django.urls import path
from .views import home_page_view

urlpatterns = [
  path('', home_page_view, name='home')
]

ここまでやってから、% exitコマンドでPythonの仮想環境を抜けます。

Docker上でDjangoを動かす

Dockerfileを作成します。

% touch dockerfile

Dockerfileには以下のように書きます。

FROM python:3.7

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code

COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system

COPY . /code/

Dockerfileを配置したディレクトリで、buildコマンドを実行します。
すると自動的にイメージがビルドされます。

docker build .

色々とログが出力されますが、うまくいっていれば最後に「Successfully built xxxxxx」と表示されるはずです。

Step 7/7 : COPY . /code/
 ---> b35389def0ca
Successfully built b35389def0ca

次にdocker-compose.ymlファイルを作成します。

% touch docker-compose.yml

docker-compose.ymlには次のようなコードを書きます。

version: '3.7'

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

最後にDockerコンテナを起動します。
以下のコマンドを実行してください。

docker-compose up

起動に成功したら以下のようなコメントが表示されます。

Attaching to hello_web_1
web_1  | Watching for file changes with StatReloader
web_1  | Performing system checks...
web_1  | 
web_1  | System check identified no issues (0 silenced).
web_1  | April 17, 2020 - 05:42:27
web_1  | Django version 3.0.1, using settings 'hello_project.settings'
web_1  | Starting development server at http://0.0.0.0:8000/
web_1  | Quit the server with CONTROL-C.

これでDjangoはDockerコンテナ上で動いています。

http://127.0.0.1:8000/にアクセスすると、Djangoの画面が表示されます。

コメントを残す

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