docker-archive / compose-cli

Easily run your Compose application to the cloud with compose-cli
Apache License 2.0
956 stars 253 forks source link

Added Linux/ARM64 to ECS sidecar builds fixes #2190 and #2115 #2195

Closed mtelvers closed 1 year ago

mtelvers commented 1 year ago

What I did Updated Makefile to use docker buildx to build the ECS sidecar images for both AMD64 and ARM64.

Related issue ECS Fargate supports both AMD64 and ARM64. Running docker --context ecs compose up introduces sidecar images which are only built for AMD64. This results in all deployments to ARM64 failing. Publishing ARM64 images would fix issue #2190 and #2115.

(not mandatory) A picture of a cute animal, if possible in relation with what you did image

StefanScherer commented 1 year ago

Hey @mtelvers Thanks for you PR. We merged it, but found out that our release process for a new image is a bit more complex. As we don't want to overwrite the 1.0 image tag, the steps to do a proper multi-arch release require more engineering work. I can't tell when we're able to plan to work on the remaining parts. I apologise that I don't have a better answer for you. But I saw that you found a workaround with an own image, that will help until we fully fix this.

taco-chen commented 1 year ago

@StefanScherer Really looking forward to have the multi-arch release, which will make the compose file more elegant and tidy. Thanks!

mfittko commented 1 year ago

Is there an issue I could follow in order to be notified when the image will be available as multi arch? We'd like to deploy on ECS Fargate with Graviton 2, but the lack of a multi arch sidecar image kinda blocks us here.

mfittko commented 1 year ago

While cloud formation overlays are generally a great thing, it's utter nonsense for task definitions as you need to overlay all ContainerDefinitions, so you have to places in the compose file for defining the containers, including environment variables etc. It would be great if you could only overwrite the image in this case, but what we need is just a multi arch image version of docker/ecs-searchdomain-sidecar:1.0 on docker hub, no? Why is it so complicated to provide this? Any amd64 based deployments should still work while it's possible for AMD deployments to work without the overlay.

@StefanScherer so IMO it should be okay to overwrite the 1.0 tag like this when it's based on the exact same Dockerfile - you'd save many people from running into this.

docker buildx build . -f Dockerfile -t "docker/ecs-searchdomain-sidecar:1.0" -t "docker/ecs-searchdomain-sidecar:latest" --platform=linux/arm64,linux/amd64 --push

But feel free to push for a more sophisticated solution, if that's what you think we need here. It could definitely made much easier to run Graviton 2 deployments on AWS ECS Fargate when this would work out of the box.

mfittko commented 1 year ago

Again, what is the reason not to push a multi arch build to docker hub already? I mean not even the docker compose ecs integration needs to be updated since the CloudFormation does not contain the sha256 but only the (1.0) tag name, so any docker compose generated CF deployment would be able to just keep working, no @StefanScherer ? Would be great if you could either do this or at least give an answer why it is delayed further? We'd really love to get our workloads out on ARM without that ugly workaround. Thanks 🙏