Skip to content

Docker image is not published for Linux ARM64 #259

Description

@HenryQW

Description

The published Docker image for Rustfava 1.31.0 is not available for Linux ARM64.

On an aarch64 Linux host, the normal Docker installation documented in the README fails because ghcr.io/rustledger/rustfava:1.31.0 only contains a linux/amd64 image. Forcing the AMD64 image also fails with exec format error on a host without x86 emulation.

docker manifest inspect ghcr.io/rustledger/rustfava:1.31.0 reports only:

linux/amd64

The current Dockerfile also hard-codes the x86-64 Wasmtime archive:

wasmtime-v29.0.1-x86_64-linux.tar.xz

A native ARM64 image is feasible. I built Rustfava 1.31.0 from the repository using python:3.13-slim, the ARM64 wasmtime Python wheel, and the pinned Rustledger WASM component. The resulting image ran natively on aarch64, loaded a ledger, and served the journal, holdings, balance sheet, and errors pages successfully.

Steps to Reproduce

  1. Use a Linux ARM64 host:

    uname -m
    # aarch64
  2. Pull the documented Docker image:

    docker pull ghcr.io/rustledger/rustfava:1.31.0
  3. Observe the failure:

    no matching manifest for linux/arm64/v8 in the manifest list entries
    
  4. Alternatively, force the AMD64 image and try to run it without an emulator:

    docker pull --platform linux/amd64 ghcr.io/rustledger/rustfava:1.31.0
    docker run --rm --platform linux/amd64 \
      ghcr.io/rustledger/rustfava:1.31.0 --version
  5. Observe:

    exec /usr/local/bin/rustfava: exec format error
    

Expected Behavior

Release tags and latest should publish a multi-platform image containing at least:

linux/amd64
linux/arm64

The Dockerfile should avoid hard-coding an x86-64 Wasmtime binary, either by selecting the archive from TARGETARCH or by relying on the architecture-specific wasmtime Python package already required by Rustfava.

If ARM64 images are intentionally unsupported, the Docker installation documentation should state that limitation and provide an ARM64 build procedure.

Rustfava Version

1.31.0

Python Version

3.13

Operating System

Linux ARM64 (aarch64)

Additional Context

The publish workflow currently invokes docker/build-push-action without a multi-platform platforms setting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions