本記事を真似して環境構築を行うと5分あればDjangoの開発環境を構築できる。
Djangoが使用されているWEBサイトには以下のものがあります。
- ワシントンポスト
- NASA
- [udemy] (https://www.udemy.com/ja/)
対象者
- 簡単にプログラミングを始めたい方
- PythonでWEBアプリを作りたい方
- Dockerでの開発環境を構築に興味がある方
開発環境
- macbook 12inch
- macOS Mojave バージョン10.14.4
- VisualStudio Code(以下、VSCodeで略す) バージョン1.34.0
- Docker Desktop for Mac
前提条件
- VSCode バージョン1.34.0をインストールしておく
- 拡張機能「Docker」をインストールしておく
- Docker Desktop for Macをインストールしておく
任意のフォルダに3ファイルを用意する
ここではDockerフォルダを用意してその中に以下の3ファイルを作成する。
- requirements.txt
- Dockerfile
- docker-compose.yml
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フォルダ上で右クリックして「ターミナル」をクリックする
docker-composeからDocker Containerを作成する。
ターミナル上で下記のコマンドを実行する。
// -dオプションを付加するとデーモン(サービス)として起動できる
docker-compose up -d
VSCodeのDocker拡張機能をみるとContainerが2つできていることが確認できる。
- docker_web
- postgres:11
Djangoのプロジェクトとしてhogeプロジェクトを作成する
なにはともあれプロジェクトを作成しないと始まらないのでhogeプロジェクトを作成する。
Containers欄からWeb(Django)を選択して右クリック「Attach Shell」をクリックする。
新たなターミナルが表示される。

そのターミナルにて下記のコマンドを実行する。
// django-admin startproject プロジェクト名 でプロジェクトを作成する
django-admin startproject hoge
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側にて操作することにしています。