Skip to content

Conversation

@fabrizio-monaco
Copy link
Contributor

Summary

Fixes exec /entrypoint.sh: exec format error when deploying on ARM-based devices (e.g. Raspberry Pi) by enabling multi-platform Docker builds.

Changes

Multi-platform CI build (docker.yml)

  • Added docker/setup-qemu-action for cross-platform emulation
  • Added docker/setup-buildx-action to enable Docker Buildx
  • Build now targets linux/amd64, linux/arm64, and linux/arm/v7

Multi-stage Dockerfile (Dockerfile)

  • Builder stage: installs gcc, libffi-dev, libjpeg62-turbo-dev, zlib1g-dev to compile native dependencies (cffi, Pillow) from source on ARM architectures where no pre-built wheels are available
  • Runtime stage: copies only the compiled packages — no compiler or dev headers in the final image, keeping it slim
  • Added libjpeg62-turbo as runtime dependency for Pillow

Platforms supported

Architecture Example devices
linux/amd64 Standard PCs, servers
linux/arm64 Raspberry Pi 4/5, Apple Silicon
linux/arm/v7 Raspberry Pi 2/3 (32-bit)

Closes #1

Copy link
Owner

@itsDNNS itsDNNS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great contribution, thanks @fabrizio-monaco! 🎉

Multi-stage build approach is clean. Keeps the runtime image slim while handling native compilation for ARM. QEMU + Buildx setup looks solid.

One minor thing: I'll remove the fix/* branch trigger after merge since we don't use that pattern in our workflow. Everything else looks good to go.

Appreciate you jumping on this so quickly after the issue was opened!

@itsDNNS itsDNNS merged commit 122c66d into itsDNNS:main Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

entrypoint - exec format error

2 participants