Quantcast
Channel: Active questions tagged dockerfile - DevOps Stack Exchange
Viewing all articles
Browse latest Browse all 136

Buildkit failing arm builds with missing binaries even though they are in $PATH

$
0
0

A few of our developers recently got some M1 machines, I want to provide them with ARM compatible images and have set my sights on Buildkit.

I set up a podTemplate in Jenkins and run the build with this command

buildctl build --opt platform=linux/arm64 --frontend=dockerfile.v0 --local context=. --opt build-arg:HTTP_PROXY=http://proxy-here:8080 --opt build-arg:HTTPS_PROXY=http://proxy-here:8080 --local dockerfile=. --output type=image,push=true,\\"name=\$BUILD_TAG,\$SHORT_TAG,\$MINOR_TAG,\$FULL_TAG\\"

When running for linux/amd64 everything goes as planned, however linux/arm64 will fail with a variety of errors depending on the Dockerfile, for instance:

RUN update-ca-certificates:# Error while loading /usr/bin/run-parts: No such file or directory

I have checked that run-parts exits and that it is linked to to musl with the right architecture.

RUN which run-parts# /bin/run-partsRUN ldd `which run-parts`# /lib/ld-musl-aarch64.so.1 (0x5500000000)# libc.musl-aarch64.so.1 => /lib/ld-musl-aarch64.so.1 (0x5500000000)RUN file `which run-parts`# /bin/run-parts: symbolic link to /bin/busyboxRUN file `which busybox`# /bin/busybox: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-aarch64.so.1, strippedRUN ldd `which busybox`# /lib/ld-musl-aarch64.so.1 (0x5500000000)# libc.musl-aarch64.so.1 => /lib/ld-musl-aarch64.so.1 (0x5500000000)RUN file `which update-ca-certificates`# /usr/sbin/update-ca-certificates: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-aarch64.so.1, stripped

The error seems to indicate that it is not running with the correct $PATH, but then again, which seems to have no issue finding the commands, /lib/ld-musl-aarch64.so.1 also definitely exitsts.

The error will happen to all sorts of otherwise pedestrian commands ls, addgroup (but not deluser).

I have tried linking files from /bin/ into /usr/bin/ but that quickly becomes a game of whack a mole and seems too much of a hack for me.

The base image for the container is php:7.4.28-fpm-alpine

My Google-fu completely fails me here, what am I doing wrong?


Viewing all articles
Browse latest Browse all 136

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>