Make WordPress Core

Opened 3 weeks ago

Last modified 2 weeks ago

#64654 new defect (bug)

Docker images in wordpress-develop do not support on Apple Silicon

Reported by: huzaifaalmesbah's profile huzaifaalmesbah Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version:
Component: Build/Test Tools Keywords:
Focuses: Cc:

Description

On Apple Silicon (M1), running the WordPress core development environment fails because the Docker images wordpressdevelop/php:latest and wordpressdevelop/cli:latest do not provide linux/arm64 support.

Environment

  • MacBook Pro (13-inch, M1, 2020)
  • Apple M1
  • macOS 26.3 (25D125)
  • Node.js 20.x
  • npm 10.x

Steps to Reproduce

npm install
npm run build:dev
npm run env:start

Actual Result

Docker fails with:

no matching manifest for linux/arm64/v8 in the manifest list entries

Affected images:

  • wordpressdevelop/php:latest
  • wordpressdevelop/cli:latest

Expected Result

The development environment should start successfully on Apple Silicon without requiring manual platform overrides.

Workaround

The environment starts only if docker-compose.override.yml includes platform overrides for php and cli (similar to mysql):

services:
  php:
    platform: linux/amd64
  cli:
    platform: linux/amd64
  mysql:
    platform: linux/amd64

Without overriding php and cli, the environment does not start.

Attachments (1)

Huzaifa-20260216215928.png (557.7 KB) - added by huzaifaalmesbah 3 weeks ago.

Download all attachments as: .zip

Change History (6)

#1 @noruzzaman
3 weeks ago

I’m experiencing the same issue on my machine.

Device Information:

Model: Mac mini (2024)

Chip: Apple M4

macOS: Tahoe 26.3

When running:

npm install
npm run build:dev
npm run env:start

Docker fails with:

no matching manifest for linux/arm64/v8 in the manifest list entries

https://i.ibb.co.com/vC9zcwVC/Screenshot-at-Feb-17-10-47-32.png

#2 @mcsf
3 weeks ago

I've observed the same issue, so thanks for filing this.

The environment starts only if docker-compose.override.yml includes platform overrides for php and cli (similar to mysql):

That's useful. In a pinch, when I needed to run pre-commit tests the other day, the workaround I used was to choose older Docker images that provide the necessary platform support:

$ diff .env.example .env
18c18
< LOCAL_PHP=latest
---
> LOCAL_PHP=7.4-fpm

@pento (hi!) — your name is attached to these recently updated PHP images: https://hub.docker.com/r/wordpressdevelop/php/tags

Are you the person to ask about this?

This ticket was mentioned in Slack in #core-committers by ella. View the logs.


2 weeks ago

#4 follow-up: @ellatrix
2 weeks ago

What worked for me is pulling the images manually (I already had "Use Rosetta for x86_64/amd64 emulation on Apple Silicon" on but that by itself didn't work).

docker pull --platform linux/amd64 wordpressdevelop/php:latest
docker pull --platform linux/amd64 wordpressdevelop/cli:latest

Then npm run env:start worked using that cache.

#5 in reply to: ↑ 4 @mcsf
2 weeks ago

Replying to ellatrix:

What worked for me is pulling the images manually (I already had "Use Rosetta for x86_64/amd64 emulation on Apple Silicon" on but that by itself didn't work).

docker pull --platform linux/amd64 wordpressdevelop/php:latest
docker pull --platform linux/amd64 wordpressdevelop/cli:latest

Then npm run env:start worked using that cache.

This doesn't do anything for me, but I suppose it's unsurprising because it's pulling the same images that I was already using. The real issue is that there are no images for Apple Silicon, and so Docker tries to emulate amd64 and fails. Now as to why I experience this and you don't...? I really don't know. Subtle differences in the OS's emulation ability? I thought for a second it might because you're on macOS Tahoe and I'm holding on to Sequoia, but I see that the reports from huzaifaalmesbah and noruzzaman explicitly mention Tahoe, so ¯\_(ツ)_/¯.

Btw, I should have shared earlier that I do think this comes down to emulation: the PHP container always fails when it tries to run its default command — `php-fpm` — and its only log message is:

$ docker-compose logs php
php-1  | qemu-x86_64: QEMU internal SIGSEGV {code=MAPERR, addr=0xffff9cdc06c4}

Just to be safe, I tried (re)installing Rosetta, but the outcome's the same.

Corroborating the idea that it's php-fpm specifically:

# I'm able to start an interactive throwaway container exec'ing bash:
$ docker run -it --rm  wordpressdevelop/php:latest bash
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
root@076162487f7f:/var/www#

# php itself runs:
root@076162487f7f:/var/www# php -r 'echo 42, PHP_EOL;'
42

# but FPM (FastCGI Process Manager) doesn't:
root@076162487f7f:/var/www# php-fpm
qemu-x86_64: QEMU internal SIGSEGV {code=MAPERR, addr=0xffffafa98c44}
Segmentation fault
Note: See TracTickets for help on using tickets.