閲覧が無い故に良いメモ帳と化したプログラマーブログ

主にphp関連の技術ブログ。閲覧が無い為、マークダウンが使える良いメモ帳と化している。誤ってアカウントパスワードを書いても大丈夫だ。なぜなら誰も閲覧しないからな。安心のブログシステムである。

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 = ['*']