Laravel Sail - легкий інструмент для локальної розробки Laravel у Docker. По суті це файл compose.yaml у корені проєкту і скрипт sail, що спрощує команди Docker Compose. Окремої «магії» немає - це звичайний Compose.
Встановлення:
composer require laravel/sail --dev
php artisan sail:install # обрати сервіси: mysql, pgsql, redis, meilisearch, mailpit...
./vendor/bin/sail up -d
sail:install публікує compose.yaml і додає в .env змінні для підключення до сервісів у контейнерах. Додати сервіс пізніше - php artisan sail:add.
Скрипт sail - обгортка над docker compose:
| Sail | Що виконується |
|---|---|
sail up -d |
docker compose up -d |
sail artisan migrate |
php artisan migrate у контейнері застосунку |
sail composer require ... |
Composer у контейнері |
sail npm run dev |
Node у контейнері |
sail test |
тести в контейнері |
sail shell / sail root-shell |
оболонка в контейнері |
sail tinker |
Tinker |
Зручно зробити аліас: alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'.
Що варто знати:
- версія PHP обирається в
compose.yaml(образ на основіruntimes/8.5), підтримуються кілька версій; WWWUSER/WWWGROUP- UID користувача в контейнері відповідає користувачу хоста, щоб файли, створені в контейнері, не належали root;- налаштування образів -
sail artisan sail:publishкопіює Dockerfile-и в каталогdocker/для змін (розширення PHP, пакети); - Xdebug вмикається змінною
SAIL_XDEBUG_MODEу.env(develop,debug,coverage); - порти змінюються в
.env(APP_PORT,FORWARD_DB_PORT), якщо стандартні зайняті.
Чого Sail не робить: це інструмент розробки, а не продакшен-оточення. Образи Sail розраховані на зручність (вбудований сервер, інструменти, Node), а не на безпеку чи розмір. Для продакшену будують власні образи (наприклад, на FrankenPHP чи php-fpm + nginx) або використовують хостинг на кшталт Laravel Cloud.
Альтернативи: Laravel Herd (нативно на macOS/Windows без Docker), DDEV, власний compose.yaml.