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.
- 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
- 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
- Docker & Docker Compose - Install and Use Docker
- Python 3.10 or higher
- Make (optional for shortcuts)
- 
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:
- 
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.
- 
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 
 
- 
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