Gluten ships a Dev Container configuration at .devcontainer/devcontainer.json so you can develop inside a pre-built Docker image with the Velox/Gluten native toolchain already installed. This is the fastest way to get a working Gluten build without manually installing JDK, Maven, GCC, vcpkg, and the rest of the native dependencies on your host.
The default configuration opens the workspace inside apache/gluten:vcpkg-centos-9 (static link, CentOS 9, GCC toolset 12) and runs ./dev/ci-velox-buildstatic-centos-9.sh as its postCreateCommand to perform the initial native Velox + Gluten C++ build with vcpkg. After the post-create step finishes, the container is ready for a Maven build (for example, mvn package -Pbackends-velox -DskipTests).
.devcontainer/devcontainer.json is picked up automatically when you create a Codespace for the repository).In VS Code:
F1).postCreateCommand to finish. The first run includes the native build and can take a while depending on your machine.In Codespaces, just create a new Codespace for the repository -- the same flow is executed in the cloud.
The default apache/gluten:vcpkg-centos-9 is only one of several pre-built images maintained by the Gluten community. Other images are available as well -- see the full list at https://hub.docker.com/r/apache/gluten/tags.
The Dockerfiles that produce these images, and a summary of what each one is intended for (CentOS 8/9, static vs. dynamic link, different JDK versions, CUDF, etc.), are documented in Velox Backend CI.
To use a different image -- for example a dynamically linked CentOS 8 image with JDK 17 -- edit .devcontainer/devcontainer.json and update the image field, and the postCreateCommand if the toolchain provided by the new image requires a different build script:
{ "name": "Gluten Velox Backend (centos-8-jdk17, dynamic link)", "image": "apache/gluten:centos-8-jdk17", "postCreateCommand": "./dev/builddeps-veloxbe.sh --run_setup_script=ON --enable_vcpkg=OFF --build_arrow=OFF" }
You can also drop the postCreateCommand entirely if you prefer to run the native build manually inside the container; see Build Gluten Velox backend in docker for the full set of build flags and the trade-offs between static and dynamic linking.
The same images can be used directly with docker run if you do not want to use the Dev Containers tooling:
docker run -it --rm -v "$PWD":/workspace -w /workspace apache/gluten:vcpkg-centos-9 bash # then, inside the container: ./dev/ci-velox-buildstatic-centos-9.sh
See Build Gluten Velox backend in docker for more involved build recipes (packaging the Gluten jar, dynamic-link builds, etc.).