Blender Docker
This repository is an automated blender docker image file generated, it's usefully with blender addon unit test.
Building
Docker Hub credentials
main.py logs into Docker Hub before building, so it needs DOCKER_HUB_USER and DOCKER_HUB_PASSWORD in the environment.
Create a config.env file at the repo root (gitignored):
DOCKER_HUB_USER=your_docker_hub_username
DOCKER_HUB_PASSWORD=your_docker_hub_password
It's loaded automatically by the Automation Builder run configuration (ENV_FILES) when running main.py from the IDE. Running it another way? Export those two variables yourself first.
Start your build
You can use Invoke to easily start a build, a clean or more.
invoke --list
Debug and logs
Some log are generated inside a logs folder.
build: all operation on build docker file.clean: from the dedicated function to clean all dockers images and cache.test: simple class method to try a specific docker image.
Check if the build work
Use case
Adding an Addon
Mount a new volume with your addon inside a folder (ex /blender-plugin/plugin-archive.zip), when you run your docker container add this volume and execute a script to add-it with the blender installed.
Python function to install an addon with Blender. The file his named install.py
import bpy
def b3d_install_addon():
bpy.ops.preferences.addon_install(filepath='./plugin-archive.zip')
bpy.ops.preferences.addon_enable(module='plugin-name')
if __name__ == '__main__':
b3d_install_addon()
Call this function with blender inside this container
#!/bin/sh
/opt/blender/blender --background --python "install.py"
Check Image build
docker run --rm stilobique/blender:5.1.2 ./blender --version
# Taille de l'image
docker image inspect stilobique/blender:5.1.2 --format='{{.Size}}' | numfmt --to=iec
# Dépendances manquantes
docker run --rm --entrypoint /bin/bash stilobique/blender:5.1.2 -c 'ldd /opt/blender/blender | grep "not found" || echo "All deps OK"'
# Test fonctionnel
docker run --rm stilobique/blender:5.1.2 ./blender -b --python-expr "import bpy; print('OK:', bpy.app.version_string)"
CLI helper tasks
Reusable helpers (tasks.py) are exposed as invoke tasks.
# List available tasks
invoke clean
# Clean Docker (all contexts: default, podman, ...)
python -m blender.cli clean
# List Blender tags (Gitea)
python -m blender.cli get-tags-release
# List stilobique/blender tags (Docker Hub)
python -m blender.cli get-tags-docker