Persistent data and safe updates
Images contain code and dependencies. Bind mounts and named volumes hold runtime data outside the image lifecycle.
Where each output lives
Normal container recreation preserves the configured mounts. Docker-managed volumes are separate from the checkout.
| Data | Storage and owner |
|---|---|
| Models | Host models/ assets, mounted read-only for inference. |
| Datasets | Host collection.output_dir, default ./collected; collector owns sessions. |
| Pending rows | Docker buffer_data named volume; buffer owns SQLite. |
| Unconfirmed row batches | delivery_row_builder volume; producer delivery journal. |
| Health snapshots | health_snapshots volume; services write, monitor reads. |
| Terminal logs | Docker logging driver; retention depends on its settings. |
What the buffer guarantees
Row builder journals nonempty batches before acknowledged delivery to buffer. Ingest claims rows, sends them to the backend, and acknowledges confirmed success. Expired leases allow retry after interruption.
Update code without deleting data
Pull reviewed changes, regenerate from your existing installation YAMLs, then rebuild the affected service. Use the full deployment command when adding or removing stages.
git pull --ff-only
python -m config.controller --generate
docker compose -f config/.generated/pipeline.compose.yaml up --build -d --no-deps visionengine-inference-service-people
docker compose -f config/.generated/pipeline.compose.yaml logs --tail 30 visionengine-inference-service-peopleKeep the volume namespace stable
Rebuilding images, normal up/recreation, stop, and down without volume deletion preserve named volumes. Preserve the host dataset directory separately.