tomsquest / docker-radicale

Docker image for Radicale calendar and contact server :calendar: + security :closed_lock_with_key: + addons :rocket:
GNU General Public License v3.0
562 stars 80 forks source link

Image type not selected by docker (for linux/arm/v7) #110

Closed flixhsw closed 2 years ago

flixhsw commented 2 years ago

The description on https://hub.docker.com/r/tomsquest/docker-radicale says: "The correct image type for your architecture will be automatically selected by Docker." This does not seem to be the case. On a Raspberry Pi 4 (linux/arm/v7) with this configuration for docker-compose:

  radicale:
    container_name: radicale
    image: tomsquest/docker-radicale
    volumes:
      - ./radicale:/data
    ports:
      - 5232:5232
    restart: unless-stopped

I get:

$ docker-compose up -d
Pulling radicale (tomsquest/docker-radicale:)...
latest: Pulling from tomsquest/docker-radicale
ERROR: no matching manifest for linux/arm/v7 in the manifest list entries

However, when I specify the image as image: tomsquest/docker-radicale:arm.3.0.6.0 it is working.

Another question: My first (wrong) thought was, that no arm images are available and I was about to start work on a PR for building arm images. While looking through the code, I found that ci/build-push.sh only contains amd64 and arm64 archs and creates the manifest manually.

How are the arm images build, when only amd64 and arm64 are listed as architectures? Why is docker buildx not used for building the multi-arch image?

tomsquest commented 2 years ago

Hi @flixhsw ,

Thanks for the details of the issue.

Question: does Raspberry Pi 4 (linux/arm/v7) corresponds to Docker "arm64"? I am in doubt, and there are confusion around Go architecture (docker) and OS arch... I would gladly accept a PR if you find a suitable base image :+1:

Why is docker buildx not used for building the multi-arch image?

Simply legacy. If I remember well, even manifest still requires the experimental flag.

The build-push.sh script is a bit clunky at best, so if buildx is better/safer/stronger, I would be happy to switch to it, especially now that everything is on Github actions and there are some docker buildx actions/examples.

flixhsw commented 2 years ago

Hi @tomsquest,

I am pretty sure, that linux/arm/v7 differs from arm64. See https://github.com/docker-library/official-images#architectures-other-than-amd64 or the list of alpine supported architectures: https://hub.docker.com/_/alpine

Therefore I tried to create a pullrequest that uses buildx for multiarch support. I assume, that the linked pullrequest does not really work already (for example the architecture "tags" might have changed and I did not fix anything related to it). I am pretty new to docker (and github) so it is quite a huge task to finish this. But I will try to do my best and hope for your support.