post-image

Django+Docker


Pythonのフレームワーク「Django」を試してみる

  1. Dockerで「Django」の環境を作成する
  2. Djangoの基本的な流れを抑える

公式:https://docs.docker.com/compose/django/

Docker作成

ディレクトリ構成

.
├── Dockerfile
├── requirements.txt
└── src
    ├── django_test
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── manage.py

Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . /code/

requirements.txt

Django>=2.0,<3.0
psycopg2>=2.7,<3.0

docker-compose.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

イメージの作成

$ cd src
$ docker-compose run web django-admin startproject hello .

DB設定

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

コンテナの起動

$ docker-compose up
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                      NAMES
f266f3197c4b        shokokb/django      "/bin/bash"         14 seconds ago      Up 13 seconds       127.0.0.1:8000->8000/tcp   django_test

アプリの起動

$ docker exec django_test python3 manage.py startapp hello

バージョン確認

$ docker-compose run web python -m django --version
Starting django_db_1 ... done
2.2.6

localhost:8000で確認できる

最終的なフォルダ構成

.
├── Dockerfile
├── db.sqlite3
├── docker-compose.yml
├── hello
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   ├── settings.cpython-37.pyc
│   │   ├── urls.cpython-37.pyc
│   │   └── wsgi.cpython-37.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── requirements.txt

Back to blog

あなたのひらめきをかたちに

どうやって作るのか想像がつかなければ、一緒に作り上げましょう.

お話をうかがさせてください