v2.0.0 — archive volume auto-mount
Highlights
🔌 Automatic file-backup volume mounting
Models with gobackup.archive.includes now work with zero manual volume wiring. The supervisor discovers the source container's volumes, rewrites the archive paths to /volumes/<model>/…, and recreates the gobackup container with those volumes mounted read-only — while preserving its config/backups/state mounts.
The recreated container's spec (image, command, networks, env, labels) is controlled by gobackup_container.* labels on the supervisor itself.
🧩 Array-typed label fields
Comma-separated label values are converted to real YAML arrays for every array field in gobackup's schema — archive.includes/excludes, databases.*.tables, exclude_tables, exclude_tables_prefix, skip_databases, endpoints — while identifier/secret-like fields (e.g. to, credentials, args) correctly stay strings.
⚠️ Behavior change (why 2.0)
The supervisor now recreates the gobackup container to attach archive volumes. Requirements:
- the gobackup container must carry the label
gobackup-docker.component: "gobackup"; - the supervisor needs the Docker socket mounted (
:rois sufficient); gobackup_container.commandmust be the full argv (the stock image has noENTRYPOINT).
Notes
- Multi-arch image:
ghcr.io/ekho/gobackup-docker:v2.0.0(linux/amd64+linux/arm64). - Verified end-to-end (
spike/e2e-mount/): app volume auto-mounted, archive contains the file, single recreate (no thrash). - Details: README +
docs/ARCHITECTURE.md§5.7–5.8.