-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for multiple architectures #70
Conversation
This uses `dpkg-architecture` to get the proper GNU tuple value for passing to `--build` on `./configure` invocations (which some arches can work without, but doing things like building 32bit images on 64bit kernels will break). For some reason, versions 18 and 19 do not build successfully on ppc64le, so I've excluded those combinations explicitly in `generate-stackbrew-library.sh`. This also includes the changes necessary to support the Alpine variants with proper multiarch once the upstream image is officially built that way (and the results of that for each architecture are also included below using the existing hacked-together Alpine images). Here's the results from build testing this on each architecture: `amd64`: ``` TAG IMAGE ID SIZE 17 1dd549b7ffa3 748MB 17-slim 6fbc2145c5f3 281MB 18 7e3e5c4a9f20 754MB 18-slim 5df9e72a4ef2 284MB 19 24ba3cb6c065 821MB 19-slim 1ad3a1c97322 375MB 20 24d24bceae50 874MB 20-alpine 297db53a7f3b 70.2MB 20-slim ff9f8003c780 277MB master 802a5a8bb530 809MB master-alpine a53503afc07e 68.2MB ``` `arm32v7`: ``` TAG IMAGE ID SIZE 17 df60315b83a1 616MB 17-slim 5a8c8979ba0e 242MB 18 c39107e65fb2 621MB 18-slim af17963b4999 245MB 19 b6af577ba752 674MB 19-slim 8eca11cda0c3 319MB 20 d821b51ff4dc 728MB 20-slim b1d2883c690e 240MB master 1146f759e4ab 665MB ``` `arm64v8`: ``` TAG IMAGE ID SIZE 17 08c6e606c334 692MB 17-slim 24fc927a7eb3 269MB 18 c120c119bd84 698MB 18-slim 4f5d59a1a13f 272MB 19 60cc4c096f79 764MB 19-slim 86329f73c8e9 359MB 20 1a000e5163d7 817MB 20-alpine f747d5abe1d7 65.6MB 20-slim a77cbccb4422 265MB master 1f1697a61c72 752MB master-alpine 097e8165db40 63.6MB ``` `i386`: ``` TAG IMAGE ID SIZE 17 fac39a4759d0 734 MB 17-slim 83b2b2655733 283 MB 18 03347312d01b 740 MB 18-slim 496088b5ff70 287 MB 19 7f762ce50f2c 803 MB 19-slim 2c49447c0479 377 MB 20 24aaa2505fc5 855 MB 20-alpine cad3f87c1031 69.9 MB 20-slim 21b805e82d04 282 MB master de2d23b1d874 794 MB master-alpine 83db03d437ab 67.9 MB ``` `s390x`: ``` TAG IMAGE ID SIZE 17 fe358d304581 728MB 17-slim eabdc152d3ff 287MB 18 63ef88c695e2 734MB 18-slim 0c7b31edc27f 290MB 19 a5fedc3365b6 806MB 19-slim 9b01eb0db543 386MB 20 0df5ebfae4f7 859MB 20-alpine 5eaba6a4bac2 67.9MB 20-slim 8b8583668671 282MB master 0446b22ce6ac 792MB master-alpine be3a98bf8969 65.9MB ``` `ppc64le`: ``` TAG IMAGE ID SIZE 17 479b69dfb8e4 752MB 17-slim 2250cc40ef1a 286MB 20 3e9fb910771a 885MB 20-alpine 20fa16b73284 70.8MB 20-slim 7d451df78433 281MB master b2676b68fc79 819MB master-alpine 2e6b99a7ee67 68.8MB ```
looks good; appreciate that changes are kept minimum 👍 will effectively close #69 and is a superset. |
just merged; wonder will there be an official place for the multiarch images? I checked Docker Hub or Docker Store or Docker.com Engineering blog not seeing any public news yet |
Currently they're in https://github.com/docker-library/official-images#architectures-other-than-amd64, but once we resolve docker-library/official-images#2289 (which we're hoping to do soon), then I'll have a PR to update |
verified working on arm64v8; from erlang/docker-erlang-otp#70 (comment) the erlang:20 alpine images should also work on i386, s390x, ppc64le; except arm32v7 is not verified
verified working on arm64v8; from erlang/docker-erlang-otp#70 (comment) the erlang:20 alpine images should also work on i386, s390x, ppc64le; except arm32v7 is not verified
verified working on arm64v8; from erlang/docker-erlang-otp#70 (comment) the erlang:20 alpine images should also work on i386, s390x, ppc64le; except arm32v7 is not verified
This uses
dpkg-architecture
to get the proper GNU tuple value for passing to--build
on./configure
invocations (which some arches can work without, but doing things like building 32bit images on 64bit kernels will break). This is along the same lines as docker-library/gcc#34 (and all the other PRs linked from that one).For some reason, versions 18 and 19 do not build successfully on ppc64le, so I've excluded those combinations explicitly in
generate-stackbrew-library.sh
(with a comment noting the error received -- I also tried updatingconfig.guess
andconfig.sub
in-place for those versions to see if that helps, and it does not, so I figured we might as well just exclude those from the support matrix instead since 17 and 20 both work fine).This also includes the changes necessary to support the Alpine variants with proper multiarch once the upstream image is officially built that way (and the results of that for each architecture are also included below using the existing hacked-together Alpine images). See gliderlabs/docker-alpine#304 for the upstream issue tracking that change.
Here's the results from build testing this on each architecture:
amd64
:arm32v7
:arm64v8
:i386
:s390x
:ppc64le
: