在带有 Apple M1 芯片的 Mac 上使用 Laravel Sail 时会发生此错误。Laravel Sail 提供的 docker-compose 文件默认使用 MySQL。按照配置,docker-compose 文件正在尝试使用未知版本的 MySQL (linux/arm64/v8)。这将失败并显示上面的错误消息。
这可以通过打开 Laravel 项目根文件夹中的 docker-compose.yml 文件,搜索名为 mysql 的部分并在该image:
行下方添加以下内容来解决
platform: 'linux/amd64'
添加此行将在 Mac M1 上模拟运行 Intel 映像。您可以在有关 Apple Silicon的官方Docker 文档和此处阅读有关此的一些背景信息。
如果您的用例可能,这也可以通过将图像切换到 MariaDB 而不是 MySQL 来解决。MariaDB 基本上与 MySQL 二进制兼容。如果可能的话,使用 MariaDB 可能是一个更好的选择,因为正如 Docker 文档中所述
由于 qemu 有时无法运行容器,因此尝试在 Apple Silicon 机器上运行基于 Intel 的容器进行仿真可能会崩溃。
在 M1 Mac 上的仿真中使用 MySQL 容器可能会导致启动 Sail 时出现分段错误等问题——事实上,我曾在一个案例中看到过这个问题。切换到 MariaDB 解决了这个问题。您可以通过将image:
docker-compose.yml 文件中 mysql 服务的行更改为:
image: 'mariadb'