feat(blender): blender-run one-shot headless wrapper + FLEETTOOLS entry
scripts/blender-run launches each call as a docker run --rm of the Blender image on fv-ml1 GPU 3, capped at 64g / 48 CPUs. It needs no desktop and does not affect the GUI container's lifecycle. --job DIR stages a local directory to /tank/blender/jobs/<name>/, runs Blender with that as the cwd, and copies results back. It always passes --python-exit-code 1, because Blender otherwise exits 0 when a --python script raises (measured). Tested headless: Cycles GPU and CPU, EEVEE via EGL, Workbench, an STL round-trip, and exit codes (3, 7 and 1 pass through). There is no STEP importer. Written for draupnir's design work, and indexed in FLEETTOOLS with a detail file.
This commit is contained in:
@@ -24,7 +24,15 @@ ssh infra-ops@10.251.50.54 'cd /opt/docker/compose/blender && docker compose dow
|
||||
`restart: "no"`, so a reboot never brings it back. **When a big seat moves onto GPU 3, Blender
|
||||
stays down.**
|
||||
|
||||
## Headless rendering (no desktop needed)
|
||||
## Headless rendering: `scripts/blender-run` (for scripts and CLI callers)
|
||||
|
||||
A one-shot `docker run --rm` of this image with Blender as the entrypoint. It needs no desktop and
|
||||
does not collide with the GUI container's up/down. `--job DIR` stages a local dir to
|
||||
`/tank/blender/jobs/<name>/` and copies results back. Engines tested headless on 2026-09-28:
|
||||
Cycles GPU and CPU, EEVEE (EGL), Workbench. STL import is built in; there is **no STEP importer**.
|
||||
Foot-guns and budget are in `docs/fleettools/blender.md`. First consumer: draupnir.
|
||||
|
||||
## Headless rendering inside the running GUI container
|
||||
|
||||
```bash
|
||||
ssh infra-ops@10.251.50.54 'docker exec -u abc blender blender -b /work/<file>.blend -E CYCLES -o /work/out/frame_#### -a -- --cycles-device OPTIX'
|
||||
|
||||
Reference in New Issue
Block a user