django-template/
├── .github/ # GitHub actions for CI/CD
├── docker/ # Docker configs for dev & prod
│ ├── dev/
│ ├── prod/
├── web/ # Django app source
│ ├── src/
│ ├── manage.py
│ ├── pyproject.toml # Poetry config
├── docker-compose.yml # Dev docker-compose file
├── prod.yml # Prod docker-compose file
| Feature | Status |
|---|---|
| Dockerized Environment | ✅ |
| Celery & Redis | ✅ |
| PostgreSQL + Backup | ✅ |
| ASGI (Uvicorn) Support | ✅ |
| Swagger (DRF-Spectacular) | ✅ |
| CI/CD (GitHub Actions) | ✅ |
| Multi-stage Docker build for prod | ✅ |
| RabbitMQ Support | ✅ |
| Mailpit for Dev SMTP | ✅ |
| Linters (black, ruff) | ✅ |
| Postgres backup | ✅ |
git clone https://github.com/bandirom/django-template.git ./project_nameSUPERUSER_EMAIL=[email protected]
SUPERUSER_PASSWORD=secretp@ssword
PROJECT_TITLE=MyProjectdocker-compose up -d --build
docker-compose logs -fServer will run on 8000 port. You can get access to server by browser http://localhost:8000
Run django commands through exec:
docker-compose exec web python manage.py makemigrations
docker-compose exec web python manage.py shellGet access to the container
docker-compose exec web shdocker-compose run --rm web pytest- Run Mailpit
docker run -p 1025:1025 -p 8025:8025 -d -it --rm axllent/mailpitDon't forget to set SMTP mail backend in settings
# docker/dev/env/.email.env
EMAIL_HOST=<mailpit_hostname>Where <mailpit_hostname>:
host.docker.internalfor Window and macOS172.17.0.1for Linux OS
If your server under LoadBalancer or nginx with SSL/TLS certificate you can run prod.yml configuration
docker-compose -f prod.yml up -d --buildor build image directly
docker build -t django-project -f docker/prod/web/Dockerfile .