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 hogeDockerfileを作成します。
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 8000req.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
dlibnumpyや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:
     - dbDjangoプロジェクトを作成する
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.pyDATABASES = の部分を以下に変えます。(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 -ddocker-compose.ymlに書いた通り、ポート8000で起動します。
ブラウザからhttp://localhost:8000にアクセスするとWelcomeページが表示されます。
他のデバイスから接続したいとき
ローカルネットワークの他の機器から接続する場合は、settings.pyのALLOWED_HOSTSを次のように編集してください。
ALLOWED_HOSTS = ['*']ただし、セキュリティリスクの観点から、本番環境では使用しないでください。
コンテナを確認する
起動したコンテナを確認しましょう。
docker psDjangoのコンテナを停止するには、Dockerのプロジェクトディレクトリで、docker-compose downを実行してください。
 
								
Be First to Comment