在 Laravel 上使用 Sail 时没有匹配清单错误

No Matching Manifest Error when using Sail on Laravel

我正在尝试使用 Laravel Sail 在 Laravel 中设置一个基本项目。根据 official Laravel documentation,以下命令将创建一个名为“example-app”的新 Laravel 应用程序并启动 Laravel Sail。

curl -s "https://laravel.build/example-app" | bash
cd example-app
./vendor/bin/sail up

但是,在执行 运行 这些命令后,我看到以下错误消息:

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

使用 Laravel Sail on Macs 和 Apple M1 芯片时会出现此错误。 Laravel Sail 提供的 docker-compose 文件默认使用 MySQL。根据配置,docker-compose 文件正在尝试使用未知版本的 MySQL (linux/arm64/v8)。上面的错误消息失败。

这可以通过打开 Laravel 项目根文件夹中的 docker-compose.yml 文件,搜索名为 mysql 的部分并在下面添加以下内容来解决image:

platform: 'linux/amd64'

添加此行将 运行 英特尔映像在 Mac M1 上进行仿真。您可以在官方 Docker document about Apple Silicon and .

中阅读有关此的一些背景信息

如果您的用例可能的话,这也可以通过将图像切换到 MariaDB 而不是 MySQL 来解决。 MariaDB 基本上与 MySQL 二进制兼容。如果可能,使用 MariaDB 可能是更好的选择,因为如 Docker 文档

中所述

Attempts to run Intel-based containers on Apple Silicon machines under emulation can crash as qemu sometimes fails to run the container.

在 M1 Mac 上的仿真中使用 MySQL 容器可能会导致启动 Sail 时出现诸如分段错误之类的问题 - 事实上我在一个案例中看到了这个问题。切换到 MariaDB 解决了这个问题。您可以通过将 docker-compose.yml 文件中 mysql 服务的 image: 行更改为,将 Laravel Sail 切换到 MariaDB 而不是 MySQL :

image: 'mariadb'

在 Github 上发布了这个,我想我也会把它留在这里 https://github.com/laravel/framework/issues/38370

Laravel Version: 8.54.0
PHP Version: 8.0
Database Driver & Version: MySQL 8
MacOS: Big Sur 11.5.2

MacM1DockerLaravelSailMySQL8不会拉臂拱 示例应用程序不会在 M1 芯片

上“向上航行”(docker-组合)

错误:

Pulling mysql (mysql:8.0)...
8.0: Pulling from library/mysql
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries

https://github.com/laravel/framework/blob/fc0a4a7400cf528d05fd5660ffe8db372c50baa9/docker-compose.yml#L9

一个简单的解决方法是改用 MariaDB:

docker-compose.yml:

    mysql:
        image: 'mariadb'

完成

如果你真的需要MySQL:

docker 推荐,我不需要。

打开终端 -> softwareupdate --install-rosetta

Docker-compose.yml

    mysql:
        platform: linux/x86_64
        image: 'mysql:8.0'

之后,将拉取正确的 MySQL 图片。

sail up

Pulling mysql (mysql/mysql-server:8.0.23)...
8.0.23: Pulling from mysql/mysql-server

完成

其他链接: https://docs.docker.com/docker-for-mac/apple-silicon/