Django Docker Quickstart
This quickstart provides an easy way to initiate a Django project using Docker. It comes with pre-configured services including PostgreSQL, Redis, Celery (worker and beat), Nginx, and Traefik, ready to run a Django web application. Additionally, it provides a few handy shortcuts for easier development.
Features 🚀
- Django web application framework
 - PostgreSQL database
 - Redis in-memory data structure store
 - Celery worker and beat services for running background tasks asynchronously
 - Nginx web server for serving static and media files, and proxying requests to the Django application
 - Traefik reverse proxy for routing requests to the appropriate service and providing SSL termination
 
Included Packages and Tools 🛠️
- Pytest: Testing framework
 - Pytest Sugar: A pytest plugin for a better look
 - Pytest Django: A pytest plugin providing useful tools for testing Django applications
 - Coverage: Test coverage tool
 - Ruff: Linter
 - Black: Code formatter
 
Requirements 📋
- Docker & Docker Compose - Install and Use Docker
 - Python 3.10 or higher
 - Make (optional for shortcuts)
 
Getting Started 🏁
- 
Clone the repository:
git clone https://github.com/godd0t/django-docker-quickstart.git - 
Change directory into the project:
cd django-docker-quickstart - 
Copy the
env.examplefile to.envand update the values as needed:- For Linux/macOS:
cp env.example .env - For Windows (Command Prompt):
Copy-Item -Path env.example -Destination .env 
 - For Linux/macOS:
 
Initial Setup ⚙️
Development Prerequisites
- 
Create a virtual environment:
python -m venv venv - 
Activate the virtual environment:
source venv/bin/activate - 
(Optional) Install the development requirements specific to your IDE for enhanced functionality and support.
pip install -r src/requirements-dev.txt - 
Build the image and run the container:
- 
If buildkit is not enabled, enable it and build the image:
DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.yml up --build -d - 
If buildkit is enabled, build the image:
docker-compose -f docker-compose.yml up --build -d - 
Or, use the shortcut:
make build-dev 
 - 
 
You can now access the application at http://localhost:8000. The development environment allows for immediate reflection of code changes.
Production Setup
- 
Build the image and run the container:
- 
If buildkit is not enabled, enable it and build the image:
DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.prod.yml up --build -d - 
If buildkit is enabled, build the image:
docker-compose -f docker-compose.prod.yml up --build -d - 
Or, use the shortcut:
make build-prod 
 - 
 
Shortcuts 🔑
This project includes several shortcuts to streamline the development process:
- 
Create migrations:
make make-migrations - 
Run migrations:
make migrate - 
Run the linter:
make lint - 
Run the formatter:
make format - 
Run the tests:
make test - 
Create a super user:
make super-user - 
Build and run dev environment:
make build-dev - 
Build and run prod environment:
make build-prod