docker buildx hang on node:22-alpine (armv6/armv7)
Environment
- Platform: GitHub CI
- Docker Version: 24.0.9
- Node.js Version: 22
- Image Tag: node:22-alpine
Expected Behavior
No hanging build on armv6/armv7
Current Behavior
build is hanging on npm ci --omit=dev
Possible Solution
none
Steps to Reproduce
run docker deployment on github ci
Additional Information
Logs: https://productionresultssa4.blob.core.windows.net/actions-results/c81c7c78-0f17-4d1b-bb6e-eedc5023c285/workflow-job-run-e07742bd-189a-5079-918b-43f8b2f94b89/logs/job/job-logs.txt?rsct=text%2Fplain&se=2024-05-04T18%3A34%3A48Z&sig=kywF%2F31fsM6a0PFRA%2BGMwEYu9RkOcGzkAq1EUZumrx8%3D&sp=r&spr=https&sr=b&st=2024-05-04T18%3A24%3A43Z&sv=2021-12-02
This is a known issue with the armv6 armv7. No solution has been found yet
I believe the Alpine builds, except ppcle are working again
Glade to hear will try it.
I believe the Alpine builds, except ppcle are working again
armv6/7 still not working
Yeah, I don't think the root cause of this has been found yet.
I had the same issue with node:20.14.0-alpine for arm/v7 (cannot say anything about arm/v6).
Adding --platform=$BUILDPLATFORM to FROM solved it for me. Read about it in the docs.
This is what my multistage Dockerfile now looks like:
ARG BASE_IMAGE=node:20.14.0-alpine
FROM --platform=$BUILDPLATFORM ${BASE_IMAGE} AS builder
RUN /build/stuff
...
FROM --platform=$BUILDPLATFORM ${BASE_IMAGE}
COPY --from=builder /stuff ./
...
@pabra I might be simpler to specify the platform in the command instead of in the Dockerfile like docker build --platform linux/arm/v7 and docker run --platform linux/arm/v7
@pabra on github CI this will use the host arch, which does not solve my issue here. build npm pkgs on an older nodejs is the way to go until now...
@LaurentGoderre @pheiduck I use this Dockerfile with this github action. And it now builds images for platforms: linux/amd64,linux/arm64,linux/arm/v7. Without --platform=$BUILDPLATFORM in the Dockerfile, it hang for arm v7.
Not sure what you are doing, @pheiduck. I use docker buildx with qemu in CI, so $BUILDPLATFORM is not the host arch but the arch emulated by qemu. Maybe $TARGETPLATFORM is for you?
Maybe
$TARGETPLATFORMis for you?
Will try it
$TARGETPLATFORM does not work either...
I cannot believe this has gone on so long without a resolution since 18.x builds. Appears so many issues raised across multiple issues
It seems the error is that it runs out of memory:
docker run --cap-add=SYS_PTRACE -e QEMU_STRACE=1 --rm -it --platform linux/arm/v7 node:22-alpine
1 mremap(1082126336,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
1 mremap(1082122240,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
1 mremap(1082118144,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
1 mremap(1082114048,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
1 mremap(1082109952,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
1 mremap(1082105856,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
1 mremap(1082101760,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
1 mremap(1082097664,4096,8192,0,0,1082133536) = -1 errno=12 (Out of memory)
https://github.com/nodejs/node/issues/53489
Unfortunately for us going back to older node isnt an option as the platform we use is now dependent on the newer node version, but of course this issue prevents us from being able to deploy—stuck between a rock and a hard place!
Wish I had a way to help try and solve, thanks for everyone's time.
Unfortunately for us going back to older node isnt an option as the platform we use is now dependent on the newer node version, but of course this issue prevents us from being able to deploy—stuck between a rock and a hard place!
Wish I had a way to help try and solve, thanks for everyone's time.
A Workaround we found out is to copy ofter build result to the newer image
Thanks so much for the suggestion, unfortunately I dont think that works for us as we cant run the build on an older version with the updated package we want to use (next.js v14).
Fingers crossed this one gets solved 🤞