2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerとDRFの開発環境を爆速で構築する(Django Rest Framework)

Last updated at Posted at 2021-12-06

背景

個人開発で、

・サーバー側はDjangoRestFrameworkを使ってAPIサーバーを構築
・クライアント側はReactを使ってAPIサーバーと通信

みたいな事をやろうとしています。
バックエンドの環境構築はコンテナを用いるのが最近のトレンドかと思いますので、djangorestframeworkの開発環境をDockerで用意していきたいと思います。

今回はささっと環境構築するのを目的としていますので、DBはsqlite、Webサーバーも特に立てずにDjangoが起動できるだけの状態を目指します。

docker-compose.ymlも用意しますが起動するサービスも一つだけです。
爆速で環境構築して、お好みでカスタマイズしてください。

実装

実装というほどのものでもないですが以下の流れで進めます。

  1. Dockerfileを作成
  2. docker-compose.ymlを作成
  3. requirements.txtを作成
  4. docker-compose build

めちゃ簡単ですね。やっていきましょう。

Dockerfile

# BASE
FROM python:3.7-alpine

#log
ENV PYTHONUNBUFFERD 1

COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt

# update pip
# pipのバージョンが古い警告が出る。Pythonのバージョン古いのが原因な気がする
# RUN pip install --upgrade pip

RUN mkdir /django-api
WORKDIR /django-api

COPY ./django-api /django-api

RUN adduser -D user
USER user

docker-compose.yml

docker-compose.yml
version: "3"

services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./django-api:/django-api
      # - site-packages:/usr/local/lib/python3.7/site-packages
    command: >
      sh -c "python manage.py migrate &&
            python manage.py runserver 0.0.0.0:8000"

# volumes:
  # site-packages:

requirements.txt

requirements.txt
Django>=3.0.7,<3.1.0
djangorestframework>=3.11.0,<3.12.0
django-cors-headers==3.2.1

ビルドする

上記3つのファイルが用意できたら、docker-compose buildを行います。
(あまり詳しくないのですが、コマンドはdocker-composeからdocker composeに変わるらしい??)

以下のコマンドを実行。

docker-compose build

ターミナルにSuccessfully built ~~の表記が現れたら環境構築成功です。
後は思うがままに開発をするのみです。

補足

・Dockerfileやdocker-compose.ymlのコメントアウト部分は不要な記述なので、削除していただいてOKです。

・上記の通りに環境構築した場合、ミドルウェアをインストールしようとするとpipのバージョンが古いぜみたいな警告が出る場合があります。おそらくPythonのバージョンが若干古いのが原因なんじゃないかと思っています。FROMで指定するイメージをPython:latestとかにすると良いかもですね。

・requirements.txtのdjango-cors-headers==3.2.1はなくてもOKです。フロントにReactを用いてAPIで通信したい場合は、CORSを設定しないとなので上記の記述が必要になります。RUN pip install -r /requirements.txtのタイミングでインストールされます。

・上記の環境では、ライブラリをpip installした際、一見インストールに成功したように見えますが実際はインストールできません。docker-compose.ymlなどで永続化を行うか、必要なライブラリをrequirements.txtに追加していく事になると思います。

・DBやWebサーバーの設定等はよしなに行ってください。私は以下の記事を参考に、上記から色々改造を行うつもりです。
https://qiita.com/greenteabiscuit/items/c40ba038703c9f33499b

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?