microsoft / microsoft/rayfin

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

Open
#14 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug triaged
Dominant language
No language data
Stars
610
Forks
62
Avg merge
1d 23h
Merged PRs (30d)
3

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the Events App template with macOS ARM64, Podman, and the commands in the issue. Inspect rayfin/.temp/docker-compose.yml, rayfin/rayfin.yml, and the webservice and SQL Server image settings, then run npm run dev:local. Done means the template has a confirmed supported path on this environment, or the limitation and required environment are clearly documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, docker-compose, macos, postgresql
Domain
devops, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.