Skip to content

DockerでDjangoを立ち上げる + 顔認識ライブラリをインストール

DockerでDjangoを構築し、dlibやCascadeClassifier, detectMultiScale, shape_predictorなどの顔認識ライブラリを使ったアプリケーションを作成できる環境を構築します。

以下の環境を想定しています。

  • Ubuntu 22.04
  • Dockerとdocker-composeをインストール済

Dockerのファイルを作成

プロジェクト用の空ディレクトリを作成する

以下のファイルを作成します。

  • Dockerfile
  • req.txt
  • docker-compose.yml

Dockerfileの作成

適当なディレクトリを作成して、Dockerの作業用スペースとします。

cd
mkdir hoge
cd hoge

Dockerfileを作成します。

vim Dockerfile

次の内容を書き込みます。

FROM python:3.9-buster
# 環境変数
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
# 作業ディレクトリ
WORKDIR /code
RUN apt-get -y update
RUN apt-get install -y libboost-all-dev \
    cmake \
    build-essential \
    libx11-dev \
    libopenblas-dev liblapack-dev
# req.txt
COPY req.txt ./
# pipアップグレード
RUN pip install --upgrade pip
# パッケージ追加
RUN pip install -r req.txt
RUN apt-get update \
    && apt-get install -y libsm6 libxext6 libxrender-dev \
    && rm -rf /var/lib/apt/lists/*
# ローカルのディレクトリを/codeに追加する
ADD . /code
# ポートを開く
EXPOSE 8000

req.txtの作成

同じディレクトリにreq.txtを作成します。

vim req.txt

次の内容を書き込みます。

Django>=3.1,<3.2
mysqlclient>=2.0,<2.1
gunicorn>=20.0,<21
psycopg2>=2.8,<2.9
opencv-python-headless==4.5.3.56
numpy==1.19.5
pillow
dlib

numpyやpillowは画像処理で必要になることが多いので、追加しています。
他に必要なライブラリやソフトウェアがあれば追加してください。

docker-compose.ymlの作成

同じディレクトリにdocker-compose.ymlを作成します。

次の内容を書き込みます。

version: '3' 
services:
 db:
   image: postgres:13
   environment:
     POSTGRES_HOST_AUTH_METHOD: 'trust'
   container_name: "postgre"
 web: 
   build: . 
   command: python manage.py runserver 0.0.0.0:8000
   volumes:
     - .:/code
   ports:
     - "8000:8000"
   depends_on:
     - db

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

docker-compose runコマンドを実行する

hogehogeを任意のDjangoのプロジェクト名に設定してください。

docker-compose run web django-admin.py startproject hogehoge .

このコマンドを実行することで、docker-compose.ymlのbuildからイメージがビルドされます。
ライブラリの容量が大きいため、かなり時間がかかります。辛抱強く待ちましょう。

docker-composeが完了したら、プロジェクトのディレクトリを確認します。
hogehogeが作成されているはずです。

ls -l

drwxr-xr-x 2 root   root   hogehoge
-rw-rw-r-- 1 user   user   docker-compose.yml
-rw-rw-r-- 1 user   user   Dockerfile
-rwxr-xr-x 1 root   root   manage.py
-rw-rw-r-- 1 user   user   req.txt

ファイル、ディレクトリの所有者変更

しかしながら、作成されたプロジェクトとmanage.pyの所有者がrootになっているため、今後のファイル操作で不便が生じます。所有者をuserに戻しましょう。

sudo chown -R $USER:$USER .

すると、所有者がすべてuserになるはずです。(userの値はユーザー名になります。)

データベース設定

settings.pyを編集する

hogehoge/settings.pyを編集します。

vim hogehoge/settings.py

DATABASES = の部分を以下に変えます。(docker-compose.yml)で指定したpostgresに沿った内容になります。)

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

立ち上げてみる

コンテナ起動

初期設定は以上です。次に作成したイメージからコンテナを起動しましょう。

docker-compose up

バックグラウンドで起動したいときは、

docker-compose up -d

docker-compose.ymlに書いた通り、ポート8000で起動します。
ブラウザからhttp://localhost:8000にアクセスするとWelcomeページが表示されます。

他のデバイスから接続したいとき

ローカルネットワークの他の機器から接続する場合は、settings.pyALLOWED_HOSTSを次のように編集してください。

ALLOWED_HOSTS = ['*']

ただし、セキュリティリスクの観点から、本番環境では使用しないでください。

コンテナを確認する

起動したコンテナを確認しましょう。

docker ps

Djangoのコンテナを停止するには、Dockerのプロジェクトディレクトリで、
docker-compose downを実行してください。

カテゴリプログラミング

Be First to Comment

コメントを残す

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

コメントは日本語で入力してください。(スパム対策)

CAPTCHA