本記事を真似して環境構築を行うと5分あればDjangoの開発環境を構築できる。
Djangoが使用されているWEBサイトには以下のものがあります。
* Pinterest
* ワシントンポスト
* NASA
* udemy

スポンサーリンク

対象者

  • 簡単にプログラミングを始めたい方
  • PythonでWEBアプリを作りたい方
  • Dockerでの開発環境を構築に興味がある方

開発環境

  • macbook 12inch
  • macOS Mojave バージョン10.14.4
  • VisualStudio Code(以下、VSCodeで略す) バージョン1.34.0
  • Docker Desktop for Mac

スクリーンショット 2019-05-23 3.09.26

スクリーンショット 2019-07-29 15.04.10

前提条件

  • VSCode バージョン1.34.0をインストールしておく
    • 拡張機能「Docker」をインストールしておく
  • Docker Desktop for Macをインストールしておく

任意のフォルダに3ファイルを用意する

ここではDockerフォルダを用意してその中に以下の3ファイルを作成する。
1. requirements.txt
2. Dockerfile
3. docker-compose.yml

スクリーンショット 2019-07-29 15.32.57

requirements.txtを編集する

Django==2.2.3
psycopg2
psycopg2-binary

Dockerfileを編集する

FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

docker-compose.ymlを編集する

version: "3"

services:
  db:
    container_name: postgres-django
    image: postgres:11
    volumes:
      - ./data/postgres:/var/lib/postgresql
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DATABASE=django
      - POSTGRES_USER=django
      - POSTGRES_PASSWORD=django
  web:
    container_name: django
    build: .
    volumes:
      - ./data/django:/code
    tty: true
    ports:
      - 8000:8000
    depends_on:
      - db

Dockerフォルダ上で右クリックして「ターミナル」をクリックする

スクリーンショット 2019-07-29 15.35.19

VSCodeの右下あたりにターミナルが起動する。
スクリーンショット 2019-07-29 16.17.11

docker-composeからDocker Containerを作成する。

ターミナル上で下記のコマンドを実行する。

// -dオプションを付加するとデーモン(サービス)として起動できる
docker-compose up -d

以下のようなコマンドがダダダダと流れる。
スクリーンショット 2019-07-29 15.47.06

VSCodeのDocker拡張機能をみるとContainerが2つできていることが確認できる。
1. docker_web
2. postgres:11

スクリーンショット 2019-07-29 15.51.17

Djangoのプロジェクトとしてhogeプロジェクトを作成する

なにはともあれプロジェクトを作成しないと始まらないのでhogeプロジェクトを作成する。

Containers欄からWeb(Django)を選択して右クリック「Attach Shell」をクリックする。
新たなターミナルが表示される。
スクリーンショット 2019-07-29 18.34.42

そのターミナルにて下記のコマンドを実行する。

// django-admin startproject プロジェクト名 でプロジェクトを作成する
django-admin startproject hoge

hogeプロジェクトが作成され以下のような構造となる。
スクリーンショット 2019-07-29 18.53.58

settings.pyの設定

  • DATABASE設定をpostgresqlに切り替える。
// 変更前
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

// 変更後
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': 'db',
    }
}
  • ALLOWED_HOSTSを設定する。
// 変更前
ALLOWED_HOSTS = []

// 変更後
ALLOWED_HOSTS = ['*']

Djangoプロジェクトの起動

ターミナルにて以下のコマンドを実行してブラウザでlocalhost:8000でアクセスする。

python hoge/manage.py runserver 0.0.0.0:8000

ロケット画面が表示されればOK

あとがき

  • DjangoのDATABASE設定を手動で切り替えているのでちょっと微妙
    • 切り替え後のdocker imageを作成した上で構築する
    • DATABASE設定をdocker側にもっていく(いけるのかわからないw)
  • docker execを使用する記事をよく見かけるがわかりづらいので(私だけでしょうか・・・)Django側にて操作することにしています。