Django+PostgresをDockerで爆速で用意する
概要
Djangoのロケット画面までをdockerでサクッと用意する。 大事なのはサービスの為のコーディングであり、環境構築などは本当に無駄な業務だと思ってます。 同じ考えの方は、どうぞ私のブログをコピペして下さい。
Djangoはアプリケーションを切り取ってくっつけることができるので、ローカルで動作確認したベースとなるアプリケーションを持って行ったりします。
公式サイトの日本語訳になります。 Quickstart: Compose and Django
1. 必要なファイルを用意
project/ - Dockerfile - requirements.txt - docker-compose.yml
上記3ファイルを同階層に作成します。
Dockerfile
FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/
requirements.txt
Django>=2.0,<3.0 psycopg2>=2.7,<3.0
docker-composer.yml
version: '3' services: db: image: postgres web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db
2.同階層にdjanogプロジェクトを作成する。
sudo docker-compose run web django-admin startproject project_name .
この時点で下記のようになります。
$ ls -l drwxr-xr-x 2 root root project_name -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 requirements.txt
↑のオーナーをrootから変更するおまじない。
sudo chown -R $USER:$USER .
3.作成したプロジェクトのsettings.py
を編集する
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'HOST': 'db', 'PORT': 5432, } }
4.docker-compose up
で完了
http://localhost:8000
でロケットを確認できます。
補足
settings.py
に追加設定が必要なケースもあるようです。
ALLOWED_HOSTS = ['*']