Laravel Sail под Windows
WSL
Начиная с Windows 10 версии 2004 и выше для установки WSL нужно открыть консоль с правами администратора и ввести команду:
wsl --install
Эта команда позволяет включить необходимые компоненты, скачать последнюю версию ядра Linux, установить WSL 2 в качестве компонента по-умолчанию и установить дистрибутив Linux.
Приведённая выше команда работает только если WSL не установлена вообще.
Если Вы выполнили команду
wsl --install
и видите текст справки WSL, попробуйте выполнитьwsl --list --online
, чтобы просмотреть список доступных дистрибутивов. Затем выполнитеwsl --install -d <DistroName>
для установки дистрибутива.
Команда wsl --list
выводит список доступных дистрибутивов. Проверьте если нужный дистрибутив не установлен по-умолчанию, сделать это будет можно командой wsl --set-default <DistroName>
.
Более подробно о других способах установки WSL можно прочитать здесь.
Так как скрипты Laravel Sail написаны на языке PHP, то нужно установить его внутрь дистрибутива WSL.
Например, установка PHP 8.1 в Ubuntu 20 будет производиться путём последовательного выполнения следующих команд:
sudo apt update
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php8.1 php8.1-curl php8.1-mysql php8.1-mbstring php8.1-xml php8.1-zip php8.1-bcmath php8.1-intl php8.1-readline php8.1-redis php8.1-sqlite3 php8.1-opcache php8.1-pdo
sudo apt install -y mysql-client
sudo apt -y autoremove
sudo apt clean
Docker Desktop
Если в системе не установлен Docker Desktop, ставим его.
У него всё просто: "далее - далее - далее - готово".
Если во время установки не включили компоненты WSL 2 - не страшно, это можно сделать впоследствии.
После запуска Docker заходим в его настройки и на вкладке General
активируем Use the WSL 2 based engine
:
Затем переходим в раздел Resources > WSL Integration
и активируем добавленный раннее дистрибутив:
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:
И жмём 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.
Сперва необходимо войти в подсистему WSL выполнив команду:
wsl
Также стоит заметить, что алиас 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
и ждём завершения компиляции:
Переходим на страницу http://127.0.0.1 и видим наше приложение.
В консоли также будет видно логирование запросов. Конечно, если запуск производился командой sail up
.
Для вызова различных artisan-команд в контейнере можете пользоваться алиасом sart
. Например:
sart queue:work
Всё. Удачи в разработке ?