Support mounting host/remote directories into worker containers #85
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lz/agent-nexus#85
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Nexus workers are Docker containers wrapping a git worktree, and there is currently no way to give a worker access to a directory outside that worktree — in particular a directory that lives on a different host.
This blocks any project whose data lives elsewhere in the estate. Concrete driver: the myuzik media-workflow app is developed in a Nexus worker on this host, but the beets music library it reads lives on the
ds9.lanSynology NAS. In production myuzik is co-located with the library (a plain compose bind-mount), but the dev worker is remote from the data, and Nexus can't bridge that today.Confirmed environment facts
From inside a worker (
10.0.0.x) probing the NAS:So connectivity is not the constraint. The design question is where the mount happens and what privileges it costs the worker.
Recommended design — daemon-level named volumes, unprivileged worker
Let a worker/session declare named Docker volumes with
driver_opts, and use Docker's built-inlocaldriver withtype=nfs(ortype=cifs). Nexus creates the volume via the Docker API before container start; the NFS/SMB handshake happens in the worker host's Docker daemon, not in the container.Why this is the clean primitive:
SYS_ADMIN, no/dev/fuse, no mount binaries baked into the worker image.Example the feature would need to emit at container-create time:
Alternatives considered (and why not)
SYS_ADMIN(+/dev/fusefor sshfs) and mount tooling into every worker image. Strictly worse as a platform primitive. Rejected.-v /host/path:/c). Only works when the data is already on the worker's Docker host — doesn't solve the cross-host case, which is the whole point here.Safety / constraints
10.0.0.x) is operator config, out of scope for Nexus itself.Open questions