Нет ошибки сопоставления манифеста при использовании Sail на Laravel

Я пытаюсь настроить базовый проект в Laravel, используя Laravel Sail. Согласно официальной документации Laravel, следующие команды создадут новое приложение Laravel с именем example-app и запустите 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

person SnapShot    schedule 12.06.2021    source источник


Ответы (1)


Эта ошибка возникает при использовании Laravel Sail на компьютерах Mac с чипом Apple M1. Файл docker-compose, предоставляемый Laravel Sail, по умолчанию использует MySQL. В соответствии с настройками файл docker-compose пытается использовать неизвестную версию MySQL (linux/arm64/v8). Это не удается с сообщением об ошибке выше.

Это можно решить, открыв файл docker-compose.yml в корневой папке проекта Laravel, выполнив поиск в разделе с именем mysql и добавив следующее ниже строки image:.

platform: 'linux/amd64'

Добавление этой строки запустит образ Intel в режиме эмуляции на Mac M1. Вы можете прочитать некоторую справочную информацию об этом в официальном документе Docker об Apple Silicon и здесь< /а>.

Если это возможно для вашего варианта использования, это также можно решить, переключив образ на MariaDB вместо MySQL. MariaDB в основном бинарно совместим с MySQL. Использование MariaDB может быть лучшим вариантом, если это возможно, потому что, как указано в документе Docker

Попытки запустить контейнеры на базе Intel на машинах Apple Silicon в режиме эмуляции могут привести к сбою, поскольку qemu иногда не может запустить контейнер.

Использование контейнера MySQL в эмуляции на M1 Mac может вызвать такие проблемы, как ошибка сегментации при запуске Sail — на самом деле я видел эту проблему в одном случае. Переход на MariaDB решил эту проблему. Вы можете переключить Laravel Sail на MariaDB вместо MySQL, изменив строку image: для службы mysql в файле docker-compose.yml на:

image: 'mariadb'

person SnapShot    schedule 12.06.2021