Skip to content

Support multi-platform #2

@arthurbdiniz

Description

@arthurbdiniz

The comments on the Docker for Mac issue suggests container authors should make containers multi-platform: docker/for-mac#5123 (comment)

By: @stephen-turner

This is a qemu bug, which is the upstream component we use for running Intel (amd64) containers on M1 (arm64) chips, and is unfortunately not something we control. In general, we recommend running arm64 containers on M1 chips because (even ignoring any crashes) they will always be faster and use less memory.

Please encourage the author of this container to supply an arm64 or multi-arch image, not just an Intel one. Now that M1 is a mainstream platform, we think that most container authors will be keen to do this.

Set up QEMU

The docker/setup-qemu action installs QEMU static binaries, which are used to run builders for architectures other than the host.

- name: Set up QEMU
  uses: docker/setup-qemu-action@master
  with:
    platforms: all

Set up Docker builders

The docker/setup-buildx action configures buildx, which is a Docker CLI plugin that provides enhanced build capabilities. This is the infrastructure that the following step will use for actually building images.

- name: Set up Docker Buildx
  id: buildx
  uses: docker/setup-buildx-action@master

Build and push the images

This final step uses the [docker/build-push-action][] to build the images and push them to Docker Hub using the tags we defined in the prep step. In this example, we’re building images for amd64, arm64, and ppc64le architectures.

  - name: Build
    uses: docker/build-push-action@v2
    with:
      builder: ${{ steps.buildx.outputs.name }}
      context: .
      file: ./Dockerfile
      platforms: linux/amd64,linux/arm64,linux/ppc64le
      push: true
      tags: ${{ steps.prep.outputs.tags }}

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    HacktoberfestHacktoberfest eventbugSomething isn't workinghelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions