Description
What happened?
For over a year we have been using docker's buildx
functionality to build linux/amd64
and linux/arm64
images from the selenium/node-chrome
and selenium/node-edge
docker images as there was additional functionality that we needed to add to the base image.
Up until version 125.0 we had no problems creating images, but once the 125.0
image was released, we are now getting the following error during the build process:
ERROR: failed to solve: no match for platform in manifest: not found
Attached is a proof of failure that mimics the process we are using
Duplication:
Pre-Reqs:
- Docker installed (confirmed failing on both Mac Docker Desktop and Ubuntu 22.04 Docker versions.)
- Setup docker multi-architecture build context:
docker buildx create --name docker-multiarch \
--use --driver-opt network=host --bootstrap
- Unzip the files included in: selenium-pof.zip
cd
into the extracted directory- Run the following command to build:
docker buildx bake
Result: Build fails with error:
ERROR: failed to solve: no match for platform in manifest: not found
Expected: Build completes
Additional notes about selenium-pof.zip
:
This configuration is used to be able to build images that might have slight tweaks to them (like base OS, different version numbers, different base images with the same steps applied).
docker-bake.hcl
is where most of the logic is contained. Specific line to care about:- lines 24-27: dictate what platforms to build
- line 45: defines the location of the folder where the
Dockerfile
used the build the images lives - lines 46-48: defines the contexts using environment variables with the image to pull that is sent to the
Dockerfile
. Theqa-browsers-base
value is used by theDockerfile
to determine the image to build from. - lines 49-52: Defines the parameters used to build a matrix of images. With the default values, the following images will be built using the
Dockerfile
:- selenium/node-chrome:125.0 (linux/arm64, linux/amd64)
- selenium/node-edge:125.0 (linux/arm64, linux/amd64)
- Run the build with the Default values should error out. If you change
docker-bake.hcl
line 51 to be the following, the images will build properly:upstream_version = [ "124.0" ]
- The
Dockerfile
used by the build process is located in theselenium-pof/qa/qa-browsers
directory. It leverages theqa-browsers-base
andplatforms
items defined indocker-bake.hcl
to determine the image and platforms to build for.
Other things to note:
I can't pull the image on a M3 MacBook Pro. Running:
docker pull selenium/node-chrome:latest
Yields:
latest: Pulling from selenium/node-chrome
no matching manifest for linux/arm64/v8 in the manifest list entries
Command used to start Selenium Grid with Docker (or Kubernetes)
docker buildx bake
Relevant log output
ERROR: failed to solve: no match for platform in manifest: not found
Operating System
Ubuntu 22.04
Docker Selenium version (image tag)
node-chrome:125.0
Selenium Grid chart version (chart version)
No response