Laravel Sail под Windows

37f683fc8fbee4d4e742e8ea7eac5f84.png

WSL

Начиная с Windows 10 версии 2004 и выше для установки WSL нужно открыть консоль с правами администратора и ввести команду:

wsl --install

Эта команда позволяет включить необходимые компоненты, скачать последнюю версию ядра Linux, установить WSL 2 в качестве компонента по-умолчанию и установить дистрибутив Linux.

Приведённая выше команда работает только если WSL не установлена вообще.

Если Вы выполнили команду wsl --install и видите текст справки WSL, попробуйте выполнить wsl --list --online, чтобы просмотреть список доступных дистрибутивов. Затем выполните wsl --install -d для установки дистрибутива.

Команда wsl --list выводит список доступных дистрибутивов. Проверьте если нужный дистрибутив не установлен по-умолчанию, сделать это будет можно командой wsl --set-default .

Более подробно о других способах установки WSL можно прочитать здесь.

Docker Desktop

Если в системе не установлен Docker Desktop, ставим его.

У него всё просто: «далее — далее — далее — готово».

Если во время установки не включили компоненты WSL 2 — не страшно, это можно сделать впоследствии.

После запуска Docker заходим в его настройки и на вкладке General активируем Use the WSL 2 based engine:

0768740e1134384c8c96465fd6d7bf9b.png

Затем переходим в раздел Resources > WSL Integration и активируем добавленный раннее дистрибутив:

afb1daf85da65d243d8d02319896bdf8.png

Laravel Sail

Laravel Sail возможно использовать как в новом проекте, так и подключать в существующий. Laravel Sail работает с PHP версии 7.4 и выше.

Обратите внимание, что в системе должен быть установлен PHP версии не ниже поддерживаемой Вашим приложением, а также Composer.

Удобнее всего первоначальные шаги выполнять именно из-под Windows, так как устанавливать и настраивать окружение значительно проще чем внутри wsl контейнера.

Мы будем использовать свежий проект используя инсталлятор, который установит Laravel 9 с зависимостью Sail:

laravel new blog

Так как все команды нужно начинать с vendor/bin/sail, укажем алиас для упрощения. Для этого в файл %USERPROFILE%\.bash_profile добавим строку:

alias sail='vendor/bin/sail'

Перезапускаем консоль, переходим в папку с созданным проектом и инициализируем конфигурацию Sail:

php artisan sail:install

Через запятую указываем сервисы, необходимые для приложения. Например, 0,3 установит mysql и redis:

34aa92a650cfb2fb50de2fe7a174fbe6.png

И жмём enter.

Эта команда создаст файл docker-compose.yml в корне проекта и пропишет конфиги redis и mysql в файле .env.

При необходимости одновременного запуска нескольких проектов, в файле .env можно задать ключ APP_PORT с номером порта.

Например, со значением APP_PORT=1234 приложение будет доступно по адресу http://127.0.0.1:1234.

Теперь можно переходить к запуску и здесь у нас есть два варианта:

sail up
sail up -d

Первый вариант, sail up запустит контейнеры в «живом» режиме, то есть при закрытии консоли закроется и соединение, а sail up -d запустит их в фоновом режиме и контейнеры будут работать до тех пор, пока не будет передана команда sail down либо не будет выгружен сам докер.

Просто так в Windows нельзя запустить Sail, так как он использует компоненты Linux. Именно поэтому на этапе установки WSL устанавливался дистрибутив, например, Ubuntu.

05527d5d2383380008529563b0f1c01f.png

Сперва необходимо войти в подсистему WSL выполнив команду:

wsl

4ecb53430ab56e76ac480fbe6f4fccac.png

Также стоит заметить, что алиас sail мы устанавливали в Windows и он не распространяется на подсистему, поэтому зададим его и подсистеме.

Для этого выполните команду nano ~/.bashrc и добавьте в конец файла строки:

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
alias sart='[ -f sail ] && bash sail artisan || bash vendor/bin/sail artisan'

Для применения изменений выйдем из подсистемы командой exit и заново в неё войдем:

Запускаем контейнеры командой sail up и ждём завершения компиляции:

d4bf3786d0c691f91cc1db1cd70510a7.png

Переходим на страницу http://127.0.0.1 и видим наше приложение.

af96a5b1ff10f0e6ab4b58cc34aa31f8.png

В консоли также будет видно логирование запросов. Конечно, если запуск производился командой sail up.

a55c4a2abec2e78cb0cd9d8e244479e3.png

Для вызова различных artisan-команд в контейнере можете пользоваться алиасом sart. Например:

sart queue:work

Всё. Удачи в разработке

© Habrahabr.ru