Источник: Nuances of Programming
Каждому разработчику рано или поздно приходится иметь дело с 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
Согласно документации по L aravel : 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.
Согласно документации по L aravel : При использовании Laravel Sail приложение выполняется в контейнере Docker и изолируется от локального компьютера. Тем не менее Laravel Sail предоставляет удобный способ запуска различных команд для приложения, таких как произвольные команды PHP, команды интерфейса командной строки Artisan, команды Composer и команды Node/NPM.
В контейнере Laravel Sail есть все, что требуется Laravel, и устанавливать что-либо еще на локальный компьютер без особой необходимости не нужно. Так что призываю вас сразу же взяться за разработку приложения.
Для удобства сначала создайте для Sail alias (псевдоним), чтобы с ним было проще работать:
alias sail="bash ./vendor/bin/sail"
Здесь у нас несколько Sail-команд:
С некоторыми из них вы уже познакомились. Узнайте больше об этих командах и 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