Sail: діагностика та продуктивність

Тут зібрано часті тертя Sail, які не є «багами Laravel»: ФС, мережа Compose, кеш образів і розширення PHP в контейнерах. Читайте разом із БД і сервісами, Чергами та Оточенням і деплоєм.

Навігація: Усі інструменти · Sail · БД · Черги · Env

Зміст


WSL2, Docker Desktop і синхронізація файлів

На Windows + WSL2 монтування з /mnt/c/... у Linux-контейнери часто повільне і ламає вотчери (Vite). Тримайте проєкт у ФС WSL (наприклад ~/projects/...).

Якщо редактор у Windows чіпає файли через межу WSL, можливі права чи час модифікації — домовтеся про одне місце правок.


Права, storage і vendor

Laravel потребує запису в storage/ і bootstrap/cache/ для користувача PHP в laravel.test. На Linux-хості маппінг UID/GID через WWWUSER / WWWGROUP у .env зменшує файли «від root» після sail artisan.

sail exec laravel.test ls -la storage bootstrap/cache

Якщо логи не пишуться, виправляйте власника всередині контейнера.


Порт зайнятий / FORWARD_*

Sail пробросить MySQL, Redis, HTTP на localhost. Другий MySQL або другий проєкт — address already in use.

FORWARD_DB_PORT=3307
APP_PORT=8081
FORWARD_REDIS_PORT=6380

Потім sail down && sail up -d. Усередині контейнерів порти 3306/6379 не змінюються. Детальніше: Оточення та деплой.


«На хості працює, у Sail — ні»

php / composer на хості — одна версія та розширення; sail artisan — інша (контейнер). Відсутність pdo_pgsql, redis, mongodb у образі — типова причина. Рішення: Dockerfile + sail build --no-cache.

Хости БД в .envімена сервісів (pgsql, redis), не 127.0.0.1. Див. БД.


Застарілий код: перезбірка й шари

Після змін у Dockerfile:

sail build --no-cache
sail up -d

Після composer.lock: sail composer install. Воркери черг: sail artisan queue:restart (Черги).


OPcache й автозавантаження в dev

Якщо зміни коду «не видно», перевірте validate_timestamps / opcache.revalidate_freq у php.ini контейнера. Після PSR-4-переїздів: sail composer dump-autoload.


Xdebug гальмує

Xdebug завжди додає накладні витрати. Вимикайте без потреби в breakpoints.


Vite, npm, Node зовні й усередині Sail

npm run dev на хості або sail npm у Compose — головне, щоб APP_URL, HMR і порти збігалися. Див. Env.


Логи й швидка діагностика

sail logs -f laravel.test
docker compose ps
sail exec laravel.test php -v
sail exec laravel.test php -m

Redis: sail exec redis redis-cli ping.


Коли скидати томи (втрата даних)

sail down -v знімає іменовані томи — дані БД/Redis проєкту зникнуть. Один том: docker volume rm. Див. Томи.


Див. також

← Усі інструменти