Skip to content

[🐛 Bug]: node-chrome and node-edge can no longer be used by buildx to create image for linux/arm64 environments #2276

Closed
@garth-gross

Description

@garth-gross

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.)

  1. Setup docker multi-architecture build context:
 docker buildx create --name docker-multiarch \                
  --use --driver-opt network=host --bootstrap
  1. Unzip the files included in: selenium-pof.zip
  2. cd into the extracted directory
  3. 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).

  1. 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. The qa-browsers-base value is used by the Dockerfile 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)
  2. 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" ]
    
  3. The Dockerfile used by the build process is located in the selenium-pof/qa/qa-browsers directory. It leverages the qa-browsers-base and platforms items defined in docker-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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions