Skip to content

Provide ARM support for docker-compose#358

Open
ParmuSingh wants to merge 5 commits into
presenton:mainfrom
ParmuSingh:main
Open

Provide ARM support for docker-compose#358
ParmuSingh wants to merge 5 commits into
presenton:mainfrom
ParmuSingh:main

Conversation

@ParmuSingh
Copy link
Copy Markdown

Hey - I was using presentonAI and I found out that the generic docker image is compiled for x86_64 arch CPUs.

I've created PR to add support for arm64 architecture CPUs as well.

Please feel free to modify the PR as you wish for better compatibility with your project.

Thanks for the open source contribution!

@NoahCardoza
Copy link
Copy Markdown

What's the hold up on this PR?

@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@szmania
Copy link
Copy Markdown

szmania commented Apr 13, 2026

Would love to see this PR merged. fyi @ParmuSingh looks like a few conflicts now.

@sudipnext
Copy link
Copy Markdown
Collaborator

Hello @ParmuSingh,

Thanks for the ARM support effort! A few notes before we merge this in:

1. Build Platform & Dockerfile Alignment

  • PLATFORM=linux/arm64 is passed in the compose file but isn't actually utilized in the Dockerfile. Because of this, it likely does not build for arm64 as intended.
  • Duplication Risk: Duplicating full compose files will inevitably lead to drift from docker-compose.yml (especially since we have added many more environment variables recently).
  • Recommendation: Prefer using platform: linux/arm64 directly on the existing build block, or utilize DOCKER_DEFAULT_PLATFORM.

2. The Main Blocker: Architecture-Specific Assets

The main blocker right now isn't the compose file, but the Docker build itself. The build currently always downloads export-Linux-X64.zip and sets convert-linux-x64.

To support ARM64 dynamically, we need to map the Docker build architecture (TARGETARCH) to the correct release assets:

  • For AMD64: Pull export-Linux-X64.zip and set target to convert-linux-x64
  • For ARM64: Pull export-Linux-ARM64.zip and set target to convert-linux-arm64

This can be elegantly handled directly inside the Dockerfile by leveraging Docker's native target architecture arguments and mapping them like this:

ARG TARGETARCH

# Map Docker architecture strings to our specific asset filenames
RUN if [ "$TARGETARCH" = "amd64" ]; then \
        echo "X64" > /tmp/arch && echo "x64" > /tmp/config; \
    elif [ "$TARGETARCH" = "arm64" ]; then \
        echo "ARM64" > /tmp/arch && echo "arm64" > /tmp/config; \
    fi

# Dynamically download the exact matching zip archive
RUN ARCH_SUFFIX=$(cat /tmp/arch) && \
    curl -L -O "[https://github.com/.../export-Linux-$](https://github.com/.../export-Linux-$){ARCH_SUFFIX}.zip"

I'm happy to collaborate on this! We could break this down into a smaller, more focused PR that only touches the sync script / download logic, Dockerfile, and README first. Let me know what you think.

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.

5 participants