Skip to content

Docker

Trak uses Docker Compose for local development. The main configuration lives in compose.yml and the top-level Makefile wraps common commands.

Prerequisites

  • Docker Desktop (or an alternative like OrbStack on macOS)
  • make (used by the repo tooling)

Start/stop

make start        # start all containers in the background
make start-watch  # start in the foreground with logs
make stop         # stop containers
make clean        # stop containers and remove volumes

First-time setup:

make init

This copies .env.example to .env if needed, starts services, and runs migrations.

Services-only mode

If you want to run Django locally (outside Docker) you can bring up just the backing services:

make start-services

This starts Postgres and Redis only. You are responsible for installing Python/Node and running the app locally.

Containers

Default containers defined in compose.yml:

  • db (Postgres)
  • redis (Redis)
  • web (Django)
  • vite (asset dev server)
  • celery (worker + beat)
  • frontend (standalone React app)

Some services may be optional depending on how you work (for example the standalone frontend).

Running one-off commands

Use the Makefile helpers or docker compose directly:

make manage ARGS='createsuperuser'
make shell
make dbshell

If you need a shell in the web container:

make ssh

Environment variables

Local development uses .env at the repo root. The template is .env.example. Keep secrets out of git.