Running the stack¶
Coolify runs the stack. Each service is its own Coolify resource with its own
compose file under /data/coolify/services/<uuid>/, built from a GHCR image.
There is no longer a single compose.yml you drive by hand. The old
dataland-infrastructure/compose.yml still exists in the repo as a record of
the pre-Coolify layout, but nothing running on Spark reads it. Commands against
it will look like they worked and change nothing.
For the deploy pipeline itself — how a push to main becomes a running
container — see Deploy.
Finding a container¶
Coolify appends a UUID to every container name, so docker exec dataland-agent
fails. The old names survive as network aliases, so service-to-service URLs
such as http://dataland-rag:4143 still resolve unchanged.
scripts/dl --list # every container on dataland-network, with status
scripts/dl --name agent # -> agent-5qwdlo0cynw03kzaat5n1vpc
scripts/dl agent uv run alembic upgrade head
scripts/dl redis redis-cli PING
Day to day¶
| You want to | Do this |
|---|---|
| See what is running | scripts/dl --list |
| Follow one service's logs | Coolify → resource → Logs, or docker logs -f "$(scripts/dl --name agent)" |
| Restart a service | Coolify → resource → Restart (or the API) |
| Ship a change | Push to main — see Deploy |
| Roll back | Coolify → Deployments → pick a previous sha-<commit> |
| Change a value | Coolify → resource → Environment Variables. The .env files on disk are legacy; no container reads them. |
Checks worth running¶
bash scripts/check-env-drift.sh # cross-repo .env.example drift
bash scripts/smoke.sh # read-only smoke suite against the running stack
bash backup-webui.sh # knowledge catalog + image backup (repo root, not scripts/)
bash scripts/install-boot.sh # host boot units, so the stack comes back after a reboot
The simulator is dev/test only and is not part of production; museum-api
bridges the real RDC redis there. See Deploy → Simulator.
Teardown is a deliberate act¶
There is no one-command teardown, and that is on purpose. reset-stack.sh is
gone. Deleting a volume in Coolify drops the data behind it — Postgres,
Qdrant, Redis, and the auth signing key are each a separate, deliberate step
through Coolify → resource → Storages, followed by a redeploy.
Old habits that now fail quietly
docker compose up inside a service repo does nothing useful: the per-repo
compose files were removed because they drifted from the real stack and
silently created a fake dataland-network when started first. The loud
"no configuration file" error is the intended outcome.
For code-level work without a container, run uv run inside the service repo
against its repo-local .env.