Repository navigation
Conversation
- Select architecture-specific parts (JAVA_HOME, Miniconda installer, micromamba) from TARGETARCH so the images build for amd64 and arm64 - Replace the dead micromamba source (snakepit) with micro.mamba.pm - Create the conda env with `mamba env create` (required on mamba 2.x) - Make Z_VERSION a build ARG for the all-in-one image - Add the docker-publish workflow for multi-arch Docker Hub push - Update the docker deployment docs to use buildx
|
@HwangRock Hello, as you talked with another channel, can we try to build a nightly-version of Apache Zeppelin everyday if there's any new commit in the master branch? It uses the release version to build a docker image, but we'd better build by actions with the latest master. It could be triggered daily basis and manually. WDYT? I got a confirmation from INFRA team being set by the proper secrets. |
|
@jongyoul Sure, I'll add nightly in this PR. Glad to start here! One thing before I jump in. The all-in-one apache/zeppelin image builds from the release tgz, I see two ways to go. One is building apache/zeppelin-server and apache/zeppelin-interpreter for nightly, since those already build FROM the distribution image and work with the latest master as-is. If we go this way, could you check whether push access and tokens are set for those two repos? Also, since nightly runs a full build with Spark and Hadoop every day, doing arm64 through QEMU daily would be pretty heavy on the shared runners. |
What is this PR for?
Adds ARM64 (multi-arch) support for the Zeppelin Docker images so they can run natively on arm64 hosts such as Apple Silicon.
The Dockerfiles previously hardcoded x86 (amd64) specific values, so an arm64 build failed:
JAVA_HOMEwas pinned tojava-11-openjdk-amd64x86_64installerlinux-64channelEach of these is now selected from the
TARGETARCHbuild argument (injected automatically bydocker buildx), so the same Dockerfile builds for bothlinux/amd64andlinux/arm64.While fixing the interpreter image I also found the micromamba source (
micromamba.snakepit.net) is dead and currently breaks the amd64 build too; it is replaced with the current endpoint (micro.mamba.pm). The all-in-one image's conda environment creation is changed frommamba env update --prunetomamba env create, which is required for mamba 2.x (the former is rejected when the environment does not exist yet).A manually-triggered
docker-publishGitHub Actions workflow is added to build and push the multi-archapache/zeppelinimage to Docker Hub. Docker Hub credentials are referenced from repository secrets (DOCKERHUB_USER/DOCKERHUB_TOKEN); the login step is skipped on a dry run.What type of PR is it?
Improvement
What is the Jira issue?
ZEPPELIN-6068
How should this be tested?
Built the all-in-one image locally for
linux/arm64via QEMU buildx against the released0.12.0artifact; the build ran end to end and produced alinux/arm64image. (Published versions are built by the new workflow.)Local arm64 build log (QEMU, Z_VERSION=0.12.0)
Questions:
docs/setup/deployment/docker.mdis updated.