Каждому разработчику рано или поздно приходится иметь дело с 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 и т. д., не возникнет. Почему бы в таком случае не сделать конфигурацию для разработки приложений, подобную той, которая используется в продакшене?

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Paul A. Byström: How to use Laravel Sail with the Docker Desktop WSL 2 backend

Предыдущая статьяРасширение Jupyter для VS Code
Следующая статья7 бесплатных API для уникальных приложений