From c010f990200923655dee61511f9fdb3bb56199dc Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Fri, 9 Feb 2024 11:59:10 -0800 Subject: [PATCH] docs(installation): document multi-platform support in Docker builds (#27072) --- docs/docs/installation/docker.mdx | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/docs/installation/docker.mdx b/docs/docs/installation/docker.mdx index 684ad693db..407bb74c4a 100644 --- a/docs/docs/installation/docker.mdx +++ b/docs/docs/installation/docker.mdx @@ -6,14 +6,16 @@ schemes to help users navigate our offerings. Images are built and pushed to the [Superset Docker Hub repository]( https://hub.docker.com/r/apache/superset). Different sets of images are created for: -- Published releases, with tags like `3.0.0` and the `latest` tag. -- Pull request iterations, each identified by tags starting with a SHA like + +- **Published releases** (`release`): with tags like `3.0.0` and the `latest` tag. + Those are multi-platform (arm+amd). More on that later. +- **Pull request iterations** (`pull_request`):, each identified by tags starting with a SHA like `8a2f7d378ab13c156fa183d9284b607ed69f5ecc`, and `pr-3454`, referencing the pull request ID. -- Merges to the main branch (`master`), resulting in new SHAs, with tags +- **Merges to the main branch** (`push`): resulting in new SHAs, with tags prefixed with `master` for the latest `master` version. -Each code version has multiple builds for different purposes, identified by suffixes: +Each CI build run has multiple builds for different purposes, identified by suffixes: - **Build preset:** We offer various images for different needs: - `lean`: The default Docker image, including both frontend and backend. Tags without a build_preset are lean builds, e.g., `latest`. @@ -30,7 +32,8 @@ Each code version has multiple builds for different purposes, identified by suff - `latest`: The latest official release build, implicitly the lean build on `linux/amd64`. -- `latest-dev`: the `-dev` image of the latest official release build, with a headless browser and root access. +- `latest-dev`: the `-dev` image of the latest official release build, with a + headless browser and root access. - `master`: The latest build from the `master` branch, implicitly lean on `linux/amd64`. - `master-dev`: Similar to `master` but includes a headless browser and root access. @@ -61,7 +64,20 @@ build times, larger images, lower layer cache hit rate, ...). For production use cases, we recommend that you derive our `lean` image(s) and add database support for the database you need. -## On ARM builds and working with Apple silicon +## On supporting arm64 AND amd64 + +Only the release builds are multi-platform, supporting `linux/arm64` +and `linux/amd64`. This enables higher level constructs like `helm` and +docker-compose to point to these images and effectively be multi-platform +as well. + +Pull requests and master builds +are one-image-per-platform so that they can be parallized and the +build matrix for those is more sparse as we don't need to build every +build preset on every platform, and generally can be more selective here. +For those builds, we suffix tags with `-arm` where it applies. + +### Working with Apple silicon Apple's current generation of computers uses ARM-based CPUs, and Docker running on MACs seem to require `linux/arm64/v8` (at least one user's M2 was