【Python】Docker-composeでDjangoの環境をセットアップ

はじめに

こんにちは、がんがんです。
昨年の12月よりせっせことインフラ(Docker)の勉強をしております。以前Flaskの環境を立てましたが、他の環境もいろいろ構築してみたいなと思いました。
まずはPythonの有名なライブラリであるDjangoの環境をDocker Composeを用いて構築していきます。

目的

  • Docker-composeを用いてDjangoの環境をセットアップ

環境(バージョン)

Dockerfileのセットアップ

Dockerfileのセットアップは基本的にDocker公式と同じです。Pythonのバージョンはpullしていた3.7.5を使用しています。

FROM python:3.7.5
ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

docker-compose.ymlのセットアップ

docker-compose.ymlについても基本的には変化ありません。ローカル側のファイルの置き場が違うくらいです。

version: '3'
services:
  db:
    image: postgres:11
  web:
    build: ./web
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./src:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

requirements.txtのセットアップ

こちらもバージョン指定範囲内です。

Django==2.2.2
psycopg2==2.8.3

プロジェクトの作成

Djangoプロジェクトの作成を行います。

$ docker-compose run web django-admin startproject mysite .

DBの設定

作成が完了すると、src/mysite/の直下に.pyファイルがいくつか生成されます。
src/mysite/setting.pyのDB部分を下記のように変更します。

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

プロジェクトの起動

実際にプロジェクトを起動させていきます。

$ docker-compose up -d

下記の画面が表示されれば無事に接続は完了です。
f:id:gangannikki:20200106105801j:plain

参考

Dockerの公式
docs.docker.com

そのほか参考
nmmmk.hatenablog.com
www.macky-studio.com

おわりに

今回はDocker Composeを用いてDjangoの環境を構築しました。volumesの設定とかもコード管理できるのでdocker buildよりもdocker-compose buildの方が便利だなという印象ですね。
次回はPython以外の環境にもチャレンジ致します。