Giter Club home page Giter Club logo

Comments (9)

m90 avatar m90 commented on August 23, 2024

Building for ARM sounds like a great idea, although I don't know too much about how to do it.

From what I understand there are two options:

  1. Use buildx
  2. Add a second job to the CircleCI setup that runs on ARM hardware (although I would assume this is arm64 only)

I'd be happy to look into this, but it might take a while. If you wanna give it a go in the meantime, I am happy to review and merge PRs.

Relevant place for doing this is probably

echo "$DOCKER_ACCESSTOKEN" | docker login --username offen --password-stdin
docker tag offen/docker-volume-backup:local offen/docker-volume-backup:$CIRCLE_TAG
docker tag offen/docker-volume-backup:local offen/docker-volume-backup:latest
docker push offen/docker-volume-backup:$CIRCLE_TAG
docker push offen/docker-volume-backup:latest

from docker-volume-backup.

chrismeller avatar chrismeller commented on August 23, 2024

Ok, cool, I can take a look at it sometime this week.

I don't know anything about CircleCI, so I have no idea what kind of ARM architectures they support. I know you can do this on any host using QEMU through buildx. I've done that on Github Actions, so it's probably the approach I'll try to go with.

from docker-volume-backup.

m90 avatar m90 commented on August 23, 2024

I've done that on Github Actions, so it's probably the approach I'll try to go with.

If switching to GitHub actions helps you get this set up, I'd be totally fine with ditching CircleCI here. I guess we can push to Docker Hub from anywhere.

Thank you!

from docker-volume-backup.

m90 avatar m90 commented on August 23, 2024

I just had some time to look into this myself and got buildx working on CircleCI https://github.com/offen/docker-volume-backup/compare/multiarch

There are however some issues still that I currently don't know how to resolve:

  • the mc MinIO client is only available for arm64 so this is a hard limit for what this repo can build
  • the arm64 build never passes, but seems to fail at different stages. Sometimes it fails to run apk add, sometimes it fails later when downloading the mc executable (sth along the lines of "connection reset by peer"). I assume this is some Networking issue caused by Docker in Docker in Docker (yes, this is what is happening) or similar

It would be interesting to know if:

  • does this build successfully in GitHub actions?
  • does this build successfully when "unboxed" in CircleCI and run in a machine executor instead of a Docker one?

from docker-volume-backup.

m90 avatar m90 commented on August 23, 2024

Another very strange detail here: when using an http (instead of https) URL for downloading the MinIO client in the Dockerfile I can get the arm64 build to pass sometimes (unless it fails earlier).

from docker-volume-backup.

m90 avatar m90 commented on August 23, 2024

This is somehow related to networking and ca-certificates, but I don't really understand how.

When I build this locally for arm64 I will always be able to run the apk commands in the Dockerfile correctly, but downloading mc will also fail in case it's trying to use https. When using http I can successfully build an arm64 image locally.

In case anyone knows where this is coming from, I'm happy about any pointers.

from docker-volume-backup.

m90 avatar m90 commented on August 23, 2024

Upstream issue is here docker/buildx#660

from docker-volume-backup.

m90 avatar m90 commented on August 23, 2024

Ok, this required some serious voodoo as per: https://gitlab.alpinelinux.org/alpine/aports/-/issues/12406 but it seems to be working for arm64 now and v1.4.0 is published to Docker Hub, supporting multiple architectures.

If anyone has an idea how to make this work for arm/v7 et al too, I would be happy to learn about your ideas.

from docker-volume-backup.

m90 avatar m90 commented on August 23, 2024

arm/v7 works when the build compiles mc from source. v1.5.0 is now available for amd64, arm64 and arm/v7.

from docker-volume-backup.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.