Skip to main content
Version: 3.1.0 (Preview)

Development in Docker

Ambari provides a Docker-based build environment for reproducible development and verification. This environment is for building and testing Ambari; it is not a published production image or a promise of a complete Hadoop deployment recipe.

Entry Point

Run start-build-env.sh from the repository root. The script builds a base image from dev-support/docker/${BUILD_OS}, builds the common Ambari build image, and starts a user-specific container. In the reviewed 3.1 source, BUILD_OS defaults to rocky8 and MAVEN_VERSION to 3.9.11; set these explicitly when validating another supported build environment.

./start-build-env.sh mvn -version

Arguments after the script are executed in the container. Without arguments, the script opens an interactive shell. The source tree is mounted at /home/${USER_NAME}/src, and the host Maven cache is mounted at /home/${USER_NAME}/.m2.

These defaults and mounts are defined by the pinned build environment script.

Build Environment

The Dockerfiles under dev-support/docker install the build prerequisites used by the selected environment. Review the Dockerfile for the exact operating-system packages and tool versions instead of assuming that an image tag or external registry contains a particular release.

The container does not replace the repository’s module builds. Run the normal Maven commands from the mounted source tree, and build the primary React and Admin React applications through their module or package scripts as documented in the developer guides.

Architecture And ABI

Choose an image and package target that match the artifacts being verified. Python wheels and native extensions must match the target Python ABI and CPU architecture; Java and Node toolchains must match the project’s supported versions. A successful container build for one architecture does not certify another package target.

Keep generated output, credentials, private keys, and host-only configuration outside commits. The mounted .m2 directory is a cache, not a source dependency declaration.

Verification Boundary

Use the container for repeatable compile, unit-test, packaging, and artifact checks. It does not by itself verify browser behavior, SSO, a live Ambari Server, a deployed Stack, monitoring storage, or cross-host recovery. Record the exact BUILD_OS, toolchain, commands, and skipped environment-dependent checks.