| layout | page |
|---|---|
| title | Dev Container |
| nav_order | 18 |
| parent | Developer Overview |
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).
- Docker (or any other OCI runtime supported by your editor) installed and running on the host, or a GitHub Codespaces-enabled account.
- Either:
- Visual Studio Code with the Dev Containers extension, or
- GitHub Codespaces (the
.devcontainer/devcontainer.jsonis picked up automatically when you create a Codespace for the repository).
In VS Code:
- Open the cloned Gluten repository.
- Run the Dev Containers: Reopen in Container command from the Command Palette
(
F1). - Wait for the image to be pulled and the
postCreateCommandto 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:
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.shSee Build Gluten Velox backend in docker for more involved build recipes (packaging the Gluten jar, dynamic-link builds, etc.).
{ "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" }