Before the default docker remote version was updated to 20.x, specifying a docker remote platform version of 20.10.14 worked for building arm64 containers. However, now removing the setting to use the default of 20.10.21 and also specifying any other 20.x version fails to build an arm64 container. What has changed that caused this?
I’m using the circleci/aws-ecr orb to build images for specific platforms when PRs/feature branches are created on my repositories. For example:
orbs:
aws-cli: circleci/aws-cli@3
aws-ecr: circleci/aws-ecr@8
jobs:
build-container:
parameters:
platform:
description: amd64 or arm64
type: enum
default: amd64
enum: [ "amd64", "arm64" ]
executor: python3
steps:
- checkout
- setup_remote_docker:
docker_layer_caching: true
- aws-ecr/build-image:
platform: linux/<< parameters.platform >>
repo: ${CIRCLE_PROJECT_REPONAME}
push-image: false
tag: << parameters.platform >>-${CIRCLE_SHA1}
this produces a command like:
docker buildx build -f ./Dockerfile -t my-nginx:arm64-781102287233d907e225a876dad8c5d3c6629134 --platform linux/arm64 --progress plain --load .
and an error like:
#6 [2/7] RUN apk --update --no-cache upgrade && apk add --no-cache bash && mkdir -p /data/nginx/cache
#6 0.295 exec /bin/sh: exec format error
#6 ERROR: executor failed running [/bin/sh -c apk --update --no-cache upgrade && apk add --no-cache bash && mkdir -p /data/nginx/cache]: exit code: 1
specifying the docker version used to work, like:
- setup_remote_docker:
version: 20.10.14
docker_layer_caching: true
but now that is not working as well. So, why did this just stop working, and how do I fix it?