Каждому разработчику рано или поздно приходится иметь дело с Docker и контейнерами. Посмотрим, как происходит установка Docker Desktop на Windows 10, как она интегрируется с подсистемой Windows для Linux (WSL) 2 и как использовать новый инструмент командной строки Laravel Sail, чтобы быстро наладить его работу с Laravel.
Необходимые условия
- Windows 10 версии 1903 или новее.
- Подсистема Windows для Linux (WSL) 2.
1. Устанавливаем Docker Desktop
Первым делом убедитесь, что у вас есть все необходимое для продолжения установки. Последовательность действий по подключению WSL 2 описана в этой статье.
Загрузите инструкции по установке Docker Desktop и следуйте им. В соответствующем окошке поставьте галочку напротив Install required Windows components for WSL 2
(«Установить необходимые компоненты Windows для WSL 2»).
По завершении установки Docker Desktop у вас должен появиться доступ к docker
из WSL.
Если по какой-то причине эта команда не выполняется для вашего дистрибутива, то выполните следующее.
- Откройте Docker Desktop.
- Перейдите в Settings («Настройки») > Resources («Ресурсы») > WSL Integration («WSL Интеграция»).
- Подключите интеграцию с дистрибутивом.
- Нажмите на Apply & Restart («Применить и перезагрузить»).
Теперь проверим, что все работает, запустив контейнер Docker getting-started
. В терминале выполните следующую команду:
docker run -d -p 80:80 docker/getting-started
Теперь вам должно быть доступно руководство для начала работы на http://localhost/
. Если вы никогда раньше не использовали Docker, очень рекомендую прочитать: это отличное руководство.
Прежде чем продолжить, обязательно остановите или удалите запущенный контейнер getting-started
, иначе он будет мешать работе Laravel Sail.
2. Как использовать Laravel Sail
Согласно документации по Laravel: Laravel Sail — это легковесный интерфейс командной строки для взаимодействия со стандартной средой разработки Docker в Laravel. Он дает отличную базу для создания приложения на Laravel с использованием PHP, MySQL и Redis, не требуя предварительного опыта работы с Docker.
Laravel Sail устанавливается автоматически при создании нового приложения на Laravel 8. Для уже существующего приложения придется пройти два-три этапа:
1. Затребуйте его с помощью composer
:
composer require laravel/sail --dev
2. Запустите в Artisan (интерфейсе командной строки на Laravel) команду sail:install
, которая опубликует файл docker-compose.yml
в корневом каталоге приложения:
php artisan sail:install
3. Выполните команду sail up
, которая запустит контейнер:
./vendor/bin/sail up
Вот и все. Если теперь перейти на http://127.0.0.1
, отобразится стандартная приветственная страница Laravel.
Согласно документации по Laravel: При использовании Laravel Sail приложение выполняется в контейнере Docker и изолируется от локального компьютера. Тем не менее Laravel Sail предоставляет удобный способ запуска различных команд для приложения, таких как произвольные команды PHP, команды интерфейса командной строки Artisan, команды Composer и команды Node/NPM.
В контейнере Laravel Sail есть все, что требуется Laravel, и устанавливать что-либо еще на локальный компьютер без особой необходимости не нужно. Так что призываю вас сразу же взяться за разработку приложения.
Для удобства сначала создайте для Sail alias
(псевдоним), чтобы с ним было проще работать:
alias sail="bash ./vendor/bin/sail"
Здесь у нас несколько Sail-команд:
sail up
sail down
sail artisan queue:work
sail php --version
sail composer require laravel/sanctum
sail node --version
sail npm run prod
sail test
sail dusk
sail shell
sail tinker
sail share
С некоторыми из них вы уже познакомились. Узнайте больше об этих командах и Laravel Sail в целом из документации по Laravel Sail.
Заключение
Использование контейнеров при создании приложений дает уверенность в том, что все разработчики в команде работают с одними и теми же настройками и установками. Поэтому проблемных ситуаций, связанных с запуском отличных друг от друга версий PHP, MySQL, NPM и т. д., не возникнет. Почему бы в таком случае не сделать конфигурацию для разработки приложений, подобную той, которая используется в продакшене?
Читайте также:
- Реализация GitHub Action в контейнере Docker
- Kubernetes избавляется от Docker
- Генерируем образы Docker с помощью Spring Boot
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Paul A. Byström: How to use Laravel Sail with the Docker Desktop WSL 2 backend