Sail: диагностика и производителност
Тук са събрани чести триения с Sail, които не са „бъгове на Laravel“: файлова система, мрежата на Compose, кеш на образи и PHP разширения в контейнери. Четете заедно с Бази данни и услуги, Опашки и Среди и деплой.
Навигация: Всички инструменти · Sail · БД · Опашки · Env
Съдържание
- WSL2, Docker Desktop и синхронизация на файлове
- Права,
storageиvendor - Портът е зает /
FORWARD_* - „На хоста работи, в Sail — не“
- Остарял код: пресборка и слоеве
- OPcache и автозареждане в dev
- Xdebug забавя
- Vite, npm, Node извън и в Sail
- Логове и бърза диагностика
- Кога да нулирате томове (загуба на данни)
WSL2, Docker Desktop и синхронизация на файлове
На Windows + WSL2 монтирането от /mnt/c/... в Linux контейнери често е бавно и чупи watcher-и (Vite). Дръжте проекта във ФС на WSL (напр. ~/projects/...).
Права, storage и vendor
Laravel изисква запис в storage/ и bootstrap/cache/ за PHP потребителя в laravel.test. На Linux хост WWWUSER / WWWGROUP в .env намаляват файлове „от root“.
sail exec laravel.test ls -la storage bootstrap/cache
Портът е зает / FORWARD_*
Задайте различни FORWARD_DB_PORT, APP_PORT, FORWARD_REDIS_PORT за всеки проект. Вътре в контейнерите вътрешните портове остават стандартни. Вижте Среди и деплой.
„На хоста работи, в Sail — не“
php на хоста ≠ sail artisan. Липсващи разширения в образа — редактирайте Dockerfile и sail build --no-cache. Хостове в .env — имена на услуги (pgsql, redis), не 127.0.0.1. БД.
Остарял код: пресборка и слоеве
sail build --no-cache
sail up -d
След промени в кода на воркери: sail artisan queue:restart (Опашки).
OPcache и автозареждане в dev
Проверете validate_timestamps в php.ini. sail composer dump-autoload след PSR-4 промени.
Xdebug забавя
Изключвайте, когато не дебъгвате активно.
Vite, npm, Node извън и в Sail
Подравнете APP_URL, HMR и прокси портове. Env.
Логове и бърза диагностика
sail logs -f laravel.test
docker compose ps
sail exec laravel.test php -m
Кога да нулирате томове (загуба на данни)
sail down -v изтрива именованите томове. За един том: docker volume rm. Томове.