Django+Docker
By on Oct 15, 2019
Pythonのフレームワーク「Django」を試してみる
- Dockerで「Django」の環境を作成する
- 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