Skip to content

todo-local-experimental fails on Mac OS X with podman because the containers assume x86 architecture #14

@chanezon

Description

@chanezon

Affected template

Events App

What happened?

This may be a notfix, but the sample does not work if you use podman instead of Docker on an ARM Mac OS X machine.

I used the template on Mac OS X with podman desktop instead of Docker.
The sqlserver container fails to start

SQL Server 2022 will run as non-root by default.                                                                           
 This container is running as user mssql.                                                                                   
 To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.                                                       
 /opt/mssql/bin/launch_sqlservr.sh: line 28:    15 Segmentation fault      (core dumped) "$@"                               
 SQL Server 2022 will run as non-root by default.                                                                           
 This container is running as user mssql.                                                                                   
 To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.                                                       
 /opt/mssql/bin/launch_sqlservr.sh: line 28:    15 Segmentation fault      (core dumped) "$@"  

Copilot analysis:

The SQL Server container is segfaulting because it's an x86_64 binary running under Podman's emulation on ARM64 (Apple Silicon). The MSSQL Server 2022 image doesn't support ARM64 natively, and Podman's Rosetta/qemu emulation is failing with a segfault.

The rayfin.yml has `dialect: mssql` but there's also a PostgreSQL option in the compose file. PostgreSQL has native ARM64 images. Let me switch the dialect to postgresql.

After switching to postgres.
This sample works only with Docker, not podman.

What's working:

 - App is scaffolded at /Users/pat/code/rayfin/rayfin-todo
 - Vite dev server is running at http://localhost:5173/
 - PostgreSQL containers are healthy
 - Webservice starts and handles auth

❌ What's failing:

 - The applyconfig endpoint (data schema migration) crashes due to an OData EDM library bug when the .NET webservice runs under x86→ARM64 emulation in Podman

Options to resolve:

 1. Use Rosetta with Docker Desktop instead of Podman — Docker Desktop's Rosetta integration handles x86 emulation better
 2. Use the cloud backend (npm run dev) if you have a Fabric workspace
 3. Wait for a native ARM64 image from the Rayfin team

Would you like me to try option 2 (cloud backend with npm run dev), or would you prefer a different approach?

Steps to reproduce

  1. Scaffold the template:
    mkdir rayfin-todo && cd rayfin-todo
    npm create @microsoft/rayfin@latest --
    --template https://github.com/microsoft/awesome-rayfin
    --template-name "[Experimental] Todo app with full local dev"
  2. Authenticate Docker/Podman to GHCR:
    gh auth refresh --hostname github.com --scopes read:packages
    gh auth token | podman login ghcr.io -u $(gh api user -q .login) --password-stdin
  3. Pre-pull the webservice image (required because pull_policy: always fails through the compose provider):
    docker pull --platform linux/amd64 ghcr.io/microsoft/project-rayfin/webservice:cli-1.33.0
  4. Patch pull_policy in rayfin/.temp/docker-compose.yml — change always → missing
  5. Switch dialect to postgresql in rayfin/rayfin.yml (MSSQL segfaults on ARM64 emulation)
  6. Start local dev:
    SKIP_DOCKER_CHECK=1 npm run dev:local
  7. Observe: Containers start, Vite runs at :5173, but rayfin dev db apply fails with:
    GraphQLMetadataGenerationFailed (602)
    TypeInitializationException: VocabularyModelProvider
    NullReferenceException in CsdlReader.TryParse

Root cause

The Rayfin webservice image (ghcr.io/microsoft/project-rayfin/webservice:cli-1.33.0) is x86_64-only. On Apple Silicon with Podman:

  • MSSQL → segfaults immediately (exit 139)
  • Webservice → starts but the Microsoft.OData.Edm library crashes during schema generation when running under qemu/Rosetta emulation

Environment

  • macOS ARM64 (Apple Silicon)
  • Podman 5.8.2 (exposed as docker CLI)
  • docker-compose v5.1.3 (external Podman compose provider)
  • @microsoft/rayfin-cli 1.33.0

Environment

No response

Logs or screenshots

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriaged

    Type

    No type
    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