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:
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¶
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)¶
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)¶
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)¶
- Clone the repos side by side under one root (e.g.
/home/cobanov/DATALAND). cp dataland-infrastructure/.env.example .envin that root and fill in the secrets — the template is complete, so copy-and-fill is all there is.make -C dataland-infrastructure validateuntil it reports OK.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:
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.