Ready to use build images for Nuke plugins for Linux and Windows.
The images produced here will include everything you need to build Nuke plugins. This includes the compiler for C++ (gcc-toolsets on Linux, Visual Studio on Windows, CMake and the Nuke files required to compile.)
These images are meant for both local development using development containers and deployment using CI/CD.
Build the image you need locally. This can be done with the build.sh
script. Specify the Nuke version you need, and it will build the correct image to use. For example 15.1 is specified in the examples here:
It is build within a separate dind container, and then copied over to the host. This makes it possible to build images with just Docker installed. All necessary dependencies will be installed automatically within the dind container.
./build.sh 15.1 linux
Please note that it takes some time to run. It will show some Wine errors due to no display being available in the containerized build. This is fine however. (The entire build takes around ~15 minutes on my machine)
./build.sh 15.1 windows
It is recommended to push the builded images to your own registry, so you don't need to build each use.
Since Nuke requires every minor release to be compiled natively, it needs to have a docker image as well for each minor version.
This is done in an automatic process to create the Dockerfiles whenever there is a new Nuke minor release. It uses the minor supported releases JSON from my other repo: NukeVersionParser.
This data is used once a day to check if there is anything new a new dockerfile will be created
First of all make sure you have Docker installed on your system. Guides can be found here at Docker Install. Once installed, you can test the docker image by running the command provided here. There might be some warnings of deprecation, that is because some source code in the examples uses deprecated functions.
Beneath here are some quick tests to verify everything is working on your system. It should pass compiling (this is a test for a Nuke 15 image). It might take a while for the image to be downloaded depending on your local internet connection.
./build.sh 15.1 linux
docker run --rm nukedockerbuild:15.1-linux bash -c "cd /usr/local/nuke_install/tests && cmake . -B build && cmake --build build"
./build.sh 15.1 windows
docker run --rm nukedockerbuild:16.0-windows bash -c "
cd /usr/local/nuke_install/tests && \
cmake . \
-GNinja \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=$GLOBAL_TOOLCHAIN \
-B build && \
cmake --build build
"
Note that you can change it to whatever Nuke version is available. In this example Nuke 15 is used.
docker run --rm -v "$(pwd):/nuke_build_directory \
nukedockerbuild:15.0-linux bash -c \
"cmake . -B build && cmake --build build
The images depend on the specs provided by the NDK documentation and the VFX reference platform.
Nuke will always be installed at /usr/local/nuke_install
The entry directory if you execute this image will be /nuke_build_directory
.
The image also has the NUKE_VERSION
environment set, this will always contain the version that is available in the image. For example 15.0
All Linux images are based on Red Hat based images. This means Rocky Linux for Nuke 15+ and manylinux2014 for anything lower than 15. As Foundry is using Rocky, I choose to stick to that as well. However it is basically identical to Alma.
Windows images are based on Debian Bookworm. They use the wine-msvc project to make cross compilation possible. As they mention:
This downloads and unpacks the necessary Visual Studio components using the same installer manifests as Visual Studio 2017/2019's installer uses. Downloading and installing it requires accepting the license, available at https://go.microsoft.com/fwlink/?LinkId=2086102 for the currently latest version.
So be sure to read that before using this project.
Thanks to everyone who contributed anything to the images that are used in these dockerfiles and to the maintainers of all plugins used! Without all the open source code applications that are available this would never have been possible.
This project is an independent effort, not affiliated with or endorsed by Foundry. It provides Docker images for plugin building purposes. The terms "Nuke" and related trademarks are the property of Foundry, used here for descriptive purposes only. For official information and support, please refer to Foundry's official website.
By building this project, you agree on the EULA provided by Foundry.