Django + Docker
Super easy setup
https://github.com/brendenwest/django-demo
Installation & Docs
- Overview : https://docs.docker.com/engine/understanding-docker/
- Django images: https://hub.docker.com/_/django/
- Django quickstart: https://docs.docker.com/compose/django/
- MySQL images: https://hub.docker.com/r/mysql/mysql-server/
Terminology
Docker containers wrap a piece of software in a complete filesystem that contains
everything needed to run: code, runtime, system tools, system libraries – anything
that can be installed on a server.
- Image - A binary image with stacked read-only layers representing file system
differences.
- Container - A running instance of a Docker image, with a thin, writable layer
for all changes made to the container - such as writing new files, modifying
existing files, and deleting files. When the container is deleted the writable
layer is also deleted.
Microservices - Linked Single-purpose Containers
Docker Host
Django
Container
DB
Container
Dev Process Overview
One time
1. Install virtualbox
2. Install Docker
Per Project
1. Create project directory
2. Start docker machine
3. Create Docker image for Django 1
4. Create MySQL docker image 1
5. Create initial Django project 2
6. Update settings.py database config
7. Start Docker container(s)
1 - Can be one-time step if project doesn’t require image customization
2 - if project doesn’t already exist
Creating a Django image
Create the following files:
Dockerfile - Django image specifications
Requirements.txt - python environment specifications
docker-compose.yml (optional) - Django container runtime settings
Image can be created via command line or docker-compose.yml:
$ docker build -t <IMAGE_NAME> .
$ docker-compose up -d
Creating a DB image
Optional - You can use Django image default settings instead
DB can be any valid Django data store (SQLite, MySQL, PostgreSQL)
DB can be specified in docker-compose.yml, or via dedicated Dockerfile
Django container needs to reference ports exposed by DB container
DB data storage can be packaged in container or on external ‘volume’
Useful Docker Commands
docker-machine start
eval "$(docker-machine env default)"
docker-machine ip
docker-compose up
docker-compose up -d
docker ps
docker exec -it <container> bash
docker start/stop <container>

Django via Docker

  • 1.
    Django + Docker Supereasy setup https://github.com/brendenwest/django-demo
  • 2.
    Installation & Docs -Overview : https://docs.docker.com/engine/understanding-docker/ - Django images: https://hub.docker.com/_/django/ - Django quickstart: https://docs.docker.com/compose/django/ - MySQL images: https://hub.docker.com/r/mysql/mysql-server/
  • 3.
    Terminology Docker containers wrapa piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries – anything that can be installed on a server. - Image - A binary image with stacked read-only layers representing file system differences. - Container - A running instance of a Docker image, with a thin, writable layer for all changes made to the container - such as writing new files, modifying existing files, and deleting files. When the container is deleted the writable layer is also deleted.
  • 5.
    Microservices - LinkedSingle-purpose Containers Docker Host Django Container DB Container
  • 6.
    Dev Process Overview Onetime 1. Install virtualbox 2. Install Docker Per Project 1. Create project directory 2. Start docker machine 3. Create Docker image for Django 1 4. Create MySQL docker image 1 5. Create initial Django project 2 6. Update settings.py database config 7. Start Docker container(s) 1 - Can be one-time step if project doesn’t require image customization 2 - if project doesn’t already exist
  • 7.
    Creating a Djangoimage Create the following files: Dockerfile - Django image specifications Requirements.txt - python environment specifications docker-compose.yml (optional) - Django container runtime settings Image can be created via command line or docker-compose.yml: $ docker build -t <IMAGE_NAME> . $ docker-compose up -d
  • 8.
    Creating a DBimage Optional - You can use Django image default settings instead DB can be any valid Django data store (SQLite, MySQL, PostgreSQL) DB can be specified in docker-compose.yml, or via dedicated Dockerfile Django container needs to reference ports exposed by DB container DB data storage can be packaged in container or on external ‘volume’
  • 9.
    Useful Docker Commands docker-machinestart eval "$(docker-machine env default)" docker-machine ip docker-compose up docker-compose up -d docker ps docker exec -it <container> bash docker start/stop <container>