Как использовать Laravel Sail с бэкендом Docker Desktop на WSL 2



Книга Как использовать Laravel Sail с бэкендом Docker Desktop на WSL 2

Каждому разработчику рано или поздно приходится иметь дело с Docker и контейнерами. Посмотрим, как происходит установка Docker Desktop на Windows 10, как она интегрируется с подсистемой Windows для Linux (WSL) 2 и как использовать новый инструмент командной строки Laravel Sail, чтобы быстро наладить его работу с Laravel.


Необходимые условия


  1. Windows 10 версии 1903 или новее.
  2. Подсистема 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.


Снимок экрана автора

Если по какой-то причине эта команда не выполняется для вашего дистрибутива, то выполните следующее.


  1. Откройте Docker Desktop.
  2. Перейдите в Settings («Настройки») > Resources («Ресурсы») > WSL Integration («WSL Интеграция»).
  3. Подключите интеграцию с дистрибутивом.
  4. Нажмите на 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 и т. д., не возникнет. Почему бы в таком случае не сделать конфигурацию для разработки приложений, подобную той, которая используется в продакшене?


866   0  

Comments

    Ничего не найдено.