我正在尝试使用 Laravel Sail 在 Laravel 中设置一个基本项目。根据Laravel 官方文档 https://laravel.com/docs/8.x#getting-started-on-macos以下命令将创建一个名为“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
在配备 Apple M1 芯片的 Mac 上使用 Laravel Sail 时会出现此错误。 Laravel Sail 提供的 docker-compose 文件默认使用 MySQL。根据配置,docker-compose 文件尝试使用未知版本的 MySQL (linux/arm64/v8)。此操作失败并显示上述错误消息。
这可以通过打开 Laravel 项目根文件夹中的 docker-compose.yml 文件,搜索名为 mysql 的部分并在下面添加以下内容来解决image:
line
platform: 'linux/amd64'
添加此行将在 Mac M1 上模拟运行 Intel 映像。您可以在官方中阅读有关此的一些背景信息有关 Apple Silicon 的 Docker 文档 https://docs.docker.com/docker-for-mac/apple-silicon/ and here https://stackoverflow.com/questions/65456814/docker-apple-silicon-m1-preview-mysql-no-matching-manifest-for-linux-arm64-v8.
如果您的用例可能的话,也可以通过将映像切换到 MariaDB 而不是 MySQL 来解决这个问题。 MariaDB 基本上与 MySQL 二进制兼容。如果可能的话,使用 MariaDB 可能是一个更好的选择,因为正如 Docker 文档中提到的
尝试在 Apple Silicon 机器上运行基于 Intel 的容器
由于 qemu 有时无法运行容器,仿真可能会崩溃。
在 M1 Mac 上进行模拟时使用 MySQL 容器可能会导致启动 Sail 时出现分段错误等问题 - 事实上我在一个案例中就看到过这个问题。切换到 MariaDB 解决了这个问题。您可以通过更改将 Laravel Sail 切换到 MariaDB 而不是 MySQLimage:
docker-compose.yml 文件中 mysql 服务的行:
image: 'mariadb'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)