Deploy the build container
This is the production box that runs nornir-build against volumes on a NAS. It is not the programmer Dev Container and not the Cursor worker. Host checks are in Host requirements. Variable tables, open-file limits, and the troubleshooting list stay in Remote build appliance.
One-time setup
Install Docker Desktop with WSL2. Load the CIFS module in WSL (
modprobe cifs) if this machine will mount NAS shares. Install an NVIDIA driver only when you want the GPU image. Git is required to clone the scripts.Clone the monorepo with submodules. The container images are pulled from GHCR. You do not build them on this machine. If the pull asks you to log in:
docker login ghcr.io -u <github-user>
The token needs
read:packages.From the monorepo, run the initializer once. It creates the local Docker layout, pulls the images, and starts the dashboard:
.\nornir-docker\Initialize-NornirBuildAppliance.ps1
Press Enter to use the parent of
nornir-dockeras the monorepo root, or pass-MonorepoRoot.Edit only the site files under
NORNIR_DOCKER_USER_ROOT(defaultC:\Docker; many lab machines setD:\Docker):Run\nornir-net-mounts\net-mounts\nas-mounts.tsv— which shares to mountRun\nornir-net-mounts\secrets\net-creds\*.cred— credentials for those sharesRun\nornir-net-mounts\.run.nornir-net-mounts.env— only when a host path is not the default
The committed template is
nornir-docker/example.nornir-net-mounts.run.env.
Every session
& "$env:NORNIR_DOCKER_USER_ROOT\Builds\nornir-build\start-nornir-build.ps1"
The launcher probes the GPU. A usable NVIDIA GPU selects nornir:cupy. Otherwise it selects the CPU image nornir:prod. It mounts the shares from inside the container and opens a shell.
Confirm the shell before starting a build:
echo "$NORNIR_NET_MOUNTS"prints1.findmnt -t cifslists the shares fromnas-mounts.tsv.The dashboard is at http://127.0.0.1:8087.
TEMImport,TEMBuild,TEMBuild-import, andTEMAlignare onPATH.
Those four commands are the lab build. What each stage does is TEM build scripts.
To refresh images later without re-running the initializer:
.\nornir-docker\docker-pull.ps1 -IncludeDashboard -ContinueOnError
Pass -PreferVersioned to pin the pull to the monorepo VERSION.