/django-docker-quickstart

Your all-in-one Django-Docker starter kit. Pre-configured services including PostgreSQL, Redis, Celery, with Nginx and Traefik for production. Streamlined development with included tools for testing and formatting.

Primary LanguagePythonMIT LicenseMIT

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 📋


Getting Started 🏁

  1. Clone the repository:

    git clone https://github.com/godd0t/django-docker-quickstart.git
  2. Change directory into the project:

    cd django-docker-quickstart
  3. Copy the env.example file to .env and update the values as needed:

    • For Linux/macOS:
      cp env.example .env
    • For Windows (Command Prompt):
       Copy-Item -Path env.example -Destination .env

Initial Setup ⚙️

Development Prerequisites

  1. Create a virtual environment:

    python -m venv venv
  2. Activate the virtual environment:

    source venv/bin/activate
  3. (Optional) Install the development requirements specific to your IDE for enhanced functionality and support.

    pip install -r src/requirements.dev.txt
  4. 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

  1. 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