На днях столкнулся с тем, что Docker под Windows очень медленно работает и тормозит при открытии самой простой страницы по 3-4 секунды.
Погуглив, а также пообщавшись с коллегами, я нашел целую кучу решений, которая по итогу решила вопрос, поехали!
Честно говоря, основные советы в интернете сводятся в переквалификации в DevOps, например рекомендуется «Docker Volumes для директорий кеша» и т.д., но мы же привыкли «херак и в продакшен», верно 🙂 ?
Итак вариант №1 (подсказали коллеги) — не работать через хваленый WSL2.
Для этого нужно перейти в настройки и снять галочку с «Use the WSL 2 based engine (Windows Home can only run the WSL 2 backend)», а затем установить компонент Windows «Hyper-V». После чего Docker должен перестать так сильно тормозить и ускорится в работе.
Однако … у меня этот вариант не сработал, потому что такая фишка доступна только Windows 10 Pro, а если у вас Home, как и у меня — то такой вариант не не сработает (ну или надо будет апнуть версию Windows, что не всегда возможно)
Вариант №2 — перекинуть весь проект в файловую систему WSL2
Как написали в стаке — такая медленная работа и тормоза из за того, что WSL используют файловую систему линукса, а тома винды просто подмонтированы, и процесс чтения с NTFS намного медленнее. На единичном файле это незаметно, но если у вас сотня файлов (а во фреймворках это так и есть), то сей процесс и занимает несколько секунд.
Решение простое — перекидываем весь проект в WSL2, для этого открываем сетевую шару \\WSL$ в проводнике, там будет находится папка с названием вашего WSL дистрибутива, например у меня это Ubuntu
Затем перекидываем туда проект, например в папку /home/, и запускаем docker-compose up, скорость ответа вас приятно удивит.
Каких то неудобств при работе нету, тот же PhpStorm отлично грузит проекты через сетевую шару (тем более формально это на этом же ПК), единственный минус, что все по дефолту размещается на диске С, ну это такое.
Так что смело перекидывайте проекты Docker в файловую систему WLS и тормоза пропадут.
Вариант №2
Спасибо большое автору, это помогло.
Реально думал дело в компьютере сначала, но после покупки нового задумался. Дело в файловой системе
Второй способ сработал.
Как оказалось, PhpStorm нормально работает с проектами через сетевую шару. У меня два проекта, один на PHP-Laravel, второй на Nuxt.js. Всё работает стабильно и самое главное очень шустро.
Я сменил ещё терминал в phpstorm
File — Settings — Tools — Terminal — shell path
%AppData%\Local\Microsoft\WindowsApps\
ubunta.exe(fedora.exe) — дистриб, который вы используете.
Start directory: \\wsl$\Fedora\home\user\laradocker
Хм.. у меня нет папки с названием WSL дистрибутива, только docker-desktop и docker-desktop-data
просто установи wsl
wsl —install
Точно! Спасибо)
А у меня не дает скопировать проект. Пишет «вам необходимо разрешение для выполнения этой операции»