事象
phpunitの手順の以下コマンドを実行するとエラーになる。
npm run env:start
エラーメッセージはこんな感じ
WordPress@5.9.0 env:start
node ./tools/local-env/scripts/start.jsPulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
child_process.js:655
throw err;
^Error: Command failed: docker-compose up -d wordpress-develop
at checkExecSyncError (child_process.js:616:11)
at execSync (child_process.js:652:15)
at Object. (/Users/takao/WordPress/wordpress-develop/tools/local-env/scripts/start.js:8:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47 {
status: 1,
signal: null,
output: [ null, null, null ],
pid: 91303,
stdout: null,
stderr: null
}
解決方法
.env
を以下のように修正
修正前
##
# The database software to use.
#
# Supported values are `mysql` and `mariadb`.
##
LOCAL_DB_TYPE=mysql
##
# The database version to use.
#
# Defaults to 5.7 with the assumption that LOCAL_DB_TYPE is set to `mysql` above.
#
# When using `mysql`, see https://hub.docker.com/_/mysql/ for valid versions.
# When using `mariadb`, see https://hub.docker.com/_/mariadb for valid versions.
##
LOCAL_DB_VERSION=5.7
修正後
##
# The database software to use.
#
# Supported values are `mysql` and `mariadb`.
##
LOCAL_DB_TYPE=mariadb
##
# The database version to use.
#
# Defaults to 5.7 with the assumption that LOCAL_DB_TYPE is set to `mysql` above.
#
# When using `mysql`, see https://hub.docker.com/_/mysql/ for valid versions.
# When using `mariadb`, see https://hub.docker.com/_/mariadb for valid versions.
##
LOCAL_DB_VERSION=10.7
※
mariadb
のバージョンは10.7としていますが、https://hub.docker.com/_/mariadbで任意のバージョンを選んでください。
補足
Dockerの公式サイトに以下のように記述されています。
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/apple-silicon/
既知の問題
ARM64 アーキテクチャー向けのイメージがすべて利用可能となっているわけではありません。 Intel イメージの実行には、エミュレーションのもとで--platform linux/amd64をつけて実行することが必要です。 特に mysql イメージは ARM64 向けには利用できません。 これに対する当面の対処としては mariadb イメージを利用してください。
なので、mysql
からmariadb
に置き換えました。