在 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
一个简单的解决方法是改用 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
完成
我正在尝试使用 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
一个简单的解决方法是改用 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
完成