Загрузка...

Laravel Sail. Docker + Laravel

Laravel Sail. Простой способ запустить приложение Laravel в Docker контейнерах.
laravel cover

Введение

Laravel Sail — это инструмент командной строки для взаимодействия со средой разработки Docker. Sail обеспечивает отличную отправную точку для создания приложения Laravel с использованием PHP, MySQL и Redis. Опыт работы с Docker не требуется.

По сути, Sail — это файл docker-compose.yml, который хранится в корне вашего проекта и набор скриптов sail, при помощи которых можно управлять docker-контейнерами, определёнными в docker-compose.yml.

Laravel Sail поддерживается в macOS, Linux и Windows (через WSL2).

Установка и настройка

Laravel Sail автоматически устанавливается со всеми новыми приложениями Laravel, поэтому вы можете сразу же начать его использовать. Чтобы узнать, как создать новое приложение Laravel, обратитесь к документации по установке Laravel для вашей операционной системы. Во время установки вам будет предложено выбрать, с какими службами, поддерживаемыми Sail, ваше приложение будет взаимодействовать.

Установка в новое приложение:

curl -s "https://laravel.build/example-app?with=mysql,redis" | bash

Будет создан набор по-умолчанию – mysql, redis, meilisearch, mailhog и selenium.

Установка Sail в существующее приложение

с помощью  Composer:

composer require laravel/sail --dev

После установки Sail вы можете запустить Artisan-команду sail: install. Эта команда опубликует файл Sail docker-compose.yml в корень вашего приложения:

php artisan sail:install

Запуск контейнеров:

./vendor/bin/sail up

Настройка Bash-псевдонимов

По умолчанию команды Sail вызываются с помощью скрипта vendor/bin/sail:

./vendor/bin/sail up

Однако вместо того, чтобы многократно вводить vendor/bin/sail, вы можете создать псевдоним (alias) Bash:

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

После настройки псевдонима Bash вы можете выполнять команды Sail, просто набрав sail. В остальных примерах из этой документации предполагается, что вы настроили этот псевдоним:

sail up

Список команд

Usage:

sail COMMAND [options] [arguments]

Unknown commands are passed to the docker-compose binary.

docker-compose Commands:
sail up Start the application
sail up -d Start the application in the background
sail stop Stop the application
sail restart Restart the application
sail ps Display the status of all containers

Artisan Commands:
sail artisan … Run an Artisan command
sail artisan queue:work

PHP Commands:
sail php … Run a snippet of PHP code
sail php -v

Composer Commands:
sail composer … Run a Composer command
sail composer require laravel/sanctum

Node Commands:
sail node … Run a Node command
sail node —version

NPM Commands:
sail npm … Run a npm command
sail npx Run a npx command
sail npm run prod

PNPM Commands:
sail pnpm … Run a pnpm command
sail pnpx Run a pnpx command
sail pnpm run prod

Yarn Commands:
sail yarn … Run a Yarn command
sail yarn run prod

Bun Commands:
sail bun … Run a bun command
sail bunx Run a bunx command
sail bun run prod

Database Commands:
sail mysql Start a MySQL CLI session within the ‘mysql’ container
sail mariadb Start a MySQL CLI session within the ‘mariadb’ container
sail psql Start a PostgreSQL CLI session within the ‘pgsql’ container
sail redis Start a Redis CLI session within the ‘redis’ container

Debugging:
sail debug … Run an Artisan command in debug mode
sail debug queue:work

Running Tests:
sail test Run the PHPUnit tests via the Artisan test command
sail phpunit … Run PHPUnit
sail pest … Run Pest
sail pint … Run Pint
sail dusk Run the Dusk tests (Requires the laravel/dusk package)
sail dusk:fails Re-run previously failed Dusk tests (Requires the laravel/dusk package)

Container CLI:
sail shell Start a shell session within the application container
sail bash Alias for ‘sail shell’
sail root-shell Start a root shell session within the application container
sail root-bash Alias for ‘sail root-shell’
sail tinker Start a new Laravel Tinker session

Sharing:
sail share Share the application publicly via a temporary URL
sail open Open the site in your browser

Binaries:
sail bin … Run Composer binary scripts from the vendor/bin directory

Customization:
sail artisan sail:publish Publish the Sail configuration files
sail build --no-cache Rebuild all of the Sail containers

 

Дополнительно

В ряде случаев, из-за специфики проекта, понадобится редактировать настройки контейнеров, которые недоступны в docker-compose.yml. Для таких целей есть команда переноса файлов Dockerfile в проект из пакета sail:

sail artisan sail:publish

Эта команда скопирует файлы Dockerfile из пакета sail в ваш проект. И вы сможете произвести необходимые модификации (не забывая указать верный контекст в docker-compose.yml там, где следует).

Также интересной особенностью sail является возможность показать сайт с вашей машины кому-либо удаленно. Это можно осуществить командой sail share, которая сделает доступным ваш сайт на поддомене laravel-sail.site.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *