Skip to content

Running the stack

The short version of Deploy. One compose source of truth (dataland-infrastructure/compose.yml), one front door (the dataland-infrastructure/Makefile). The service repos ship no compose files of their own.

All commands work from anywhere thanks to -C:

make -C /home/cobanov/DATALAND/dataland-infrastructure <target>

From /home/cobanov/DATALAND the shorter make -C dataland-infrastructure ... shown below is enough. make help (the default target) lists everything.

The three commands that matter

Start the whole stack

make -C dataland-infrastructure up

Brings every service up with the existing images — no rebuild. This is the command after a host reboot or after the stack was stopped. Containers that are already running are left alone; only missing ones are created.

Full deploy (pull + rebuild everything)

make -C dataland-infrastructure deploy

Runs deploy.sh, the full ritual: pulls all six repos, fails fast if the root .env still holds placeholder secrets (the DAT-291 boot guard), mints a fresh IMAGE_TAG, rebuilds the whole stack with --build, and retags the built images to :latest. The output ends with the active tag and the rollback command.

Rebuild ONE service (the everyday command)

make -C dataland-infrastructure restart SVC=rag

Builds and recreates just that service. --no-deps is baked in, so recreating agent never ripples into notification-* and friends. Service names are the compose keys: agent, auth, rag, museum-api, information-webui, notification-worker, notification-api, docs, postgres, redis, qdrant, prometheus, grafana, alertmanager.

Day-to-day helpers

make -C dataland-infrastructure ps              # container status
make -C dataland-infrastructure logs SVC=agent  # follow one service's logs
make -C dataland-infrastructure config          # validate the rendered compose config
make -C dataland-infrastructure validate        # required/drifting env vars vs .env
make -C dataland-infrastructure drift           # cross-repo .env.example drift check
make -C dataland-infrastructure smoke           # smoke suite against the running stack
make -C dataland-infrastructure backup          # webui catalog + image backup

Simulator paths (dev/test only — the simulator is not part of the production compose):

make -C dataland-infrastructure sim-start   # isolated sidecar stack (needs SIM_TICKET_ID)
make -C dataland-infrastructure sim-stop
make -C dataland-infrastructure dev-sim     # compose.dev.yml overlay, writes to main redis

First-time setup (new host)

  1. Clone the repos side by side under one root (e.g. /home/cobanov/DATALAND).
  2. cp dataland-infrastructure/.env.example .env in that root and fill in the secrets — the template is complete, so copy-and-fill is all there is.
  3. make -C dataland-infrastructure validate until it reports OK.
  4. make -C dataland-infrastructure deploy.

See Deploy for the long-form walkthrough (cloudflared, GPU/CDI prerequisites, monitoring profile).

What is deliberately NOT a make target

Full teardown. reset-stack.sh runs docker compose down -v — it drops the volumes, i.e. postgres + qdrant + redis data. That stays a script you must consciously type out:

bash dataland-infrastructure/reset-stack.sh   # destructive, drops volumes

Old habits

Running docker compose up inside a service repo no longer works — the per-repo compose files were removed on 2026-06-11 because they drifted from the canonical stack and silently created a fake dataland-network when started first. The loud "no configuration file" error is the intended behavior; use make restart SVC=<service> instead. For code-level dev without a container, run uv run inside the service repo with its repo-local .env.