Django Dockerizing App
How to setup a Django project to run in Docker
This page explains how to Dockerize a Django application with ease. For newcomers, Django is a leading web framework crafted in Python and Docker is a virtualization software used to isolate the execution of a service or product using virtual containers.
✅ Adding Docker​
First of all, make sure you have Docker installed and running on your machine. Refer to the official documentation and follow the steps.
Once it's done, create a Dockerfile
file. This will contains all the commands that could be called on the command line to create an image.
# pull official base image
FROM python:3.9.5-slim-buster
# set work directory
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install psycopg2 dependencies
RUN apt-get update \
&& apt-get -y install netcat gcc \
&& apt-get clean
# install python dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
# copy project
COPY . .
CMD [ "python", "manage.py migrate" ]
CMD [ "python", "manage.py runserver 0.0.0.0:5000" ]
# Exposing default running port
EXPOSE 5000
Once this is done, we can build the image and run it.
$ docker build -t django_app .
$ docker run -p 5000:3000 django_app
You can now access your app on localhost:5000.
✅ Adding Docker Compose​
If you want to create multiple images and run them using the precedent Docker configuration, you'll have to create multiple Dockerfile
.
Docker Compose
saves from this by allowing you to use a YAML
file to operate multi-container applications at once and run it just with one command.
Follow the official documentation to install docker-compose
on your machine.
Once it's done, create a docker-compose.yml
file at the root of your project. Make sure to have an .env
file at the root of your project.
version: "3.8"
services:
django-app: # The name of your application
build: ./
command: >
sh -c "python manage.py migrate &&
python manage.py runserver 0.0.0.0:5000"
volumes:
- ./:/usr/src/app/
ports:
- 5000:5000
env_file:
- ./.env
We can now remove some lines from the Dockerfile
.
CMD [ "python", "manage.py migrate" ]
CMD [ "python", "manage.py runserver 0.0.0.0:5000" ]
# Exposing default running port
EXPOSE 5000
And now let's use docker-compose
command to build and run the image.
docker-compose up --build
And your application will be running on localhost:5000.
✅ Dockerize a production-ready app​
Please refer to the configuration implemented by the reference Django Codebase
- Django App
- short info regarding the codebase
- Gunicorn - the WSGI server
- Nginx - a powerful HTTP proxy
- Dockerfile
- How to bundle the information
- short description
- sample - Dockerfile
- How to bundle the information
- Docker-compose
- included sections - short description
- sample - docker-compose.yml
✅ Resources​
- 👉 Access AppSeed for more starters and support
- 👉 Deploy Projects on Aws, Azure and DO via DeployPRO
- 👉 Create landing pages with Simpllo, an open-source site builder
- 👉 Build apps with Django App Generator (free service)