Еще не опытен в докере, поэтому возможно чего то не знаю
Проблема в следующем:
Установил докер, написал небольшой docker-compose с обычным nginx и php-fpm
Все работает, с этим проблем нет
Но то КАК это работает вызывает кучу вопросов
Используется composer, если использовать "нативный" композер, то он устанавливает все зависимости за уловные секунд 40-50
Если устанавливать зависимости из под контейнера, то это спокойно можно идти заваривать чай. Все устанавливается минуты за 2 если не больше
То же самое с npm. За время которое работает npm run dev можно спокойно идти по своим делам
Так же при открытии обычной страницы
Если делать это "по старому"(не через докер) то все грузится за пару секунд
Если заходить через докер, то это не менее вечных секунд 30
Все это дело происходит на маке:
MacBook Pro (Retina, 13-inch, Late 2013)
2,6 GHz 2‑ядерный процессор Intel Core i5
8 ГБ 1600 MHz DDR3
Macintosh HD
Intel Iris 1536 МБ
Думал что может дело в системе, тк до этого не пользовался докером и была целая куча разных пакетов установлено. Решил почистить систему, но результата это не принесло
Михаил, Я уже видел что говорят о том что надо делать через виртуалку
Но на офф сайте докера говорят что это устаревший метод и достаточно использовать Docker Desktop (он установлен)
Выглядит так, как будто у контейнера просто мало ресурсов. Попробуйте покрутить ползунки в Docker Desktop, если ещё не пробовали: Preferences -> Resources. Сеть он вроде как не режет, а вот memory и cpu да.
У меня такая же конфигурация железа, подобных проблем не замечаю.
Правда я и не вижу смысла запускать сборки зависимостей и dev-среды внутри контейнера. Обычно используется просто volume (пробрасывается локальный путь). Объясните, зачем вам запускать `npm run dev` внутри контейнера?
Про то, что будут отличаться - правильно. Но то, что будут установлены другие - тут вы не правы. Любой менеджер зависимостей после update сохраняет установленные версии в lock-файл: composer.lock, package-lock.json и т.п.
Если даже у вас версия на dev/prod отличается, то composer install установит ровно то, что у вас в lock-файле.
Александр Докин, локально установлена последняя нода, с ней проект вообще не билдится
Но из контейнера стоит другая версия и она билдит проект нормально
Artem0071, принято. Если не билдится на новой версии и вы пробуете внутри контейнера на старой, почему тогда вывод о том, что это именно в контейнере проблема, а не с node? может старая версия и должна так долго билдить...
Тогда аналогично и с php. Может локально у вас стоит php7+, а в проекте php5.
Поэтому для теста попробуйте докеру дать максимум ресурсов, запустить сборку и сравнить показатели (на меньших ресурсах / локально). Так вы поймёте, во что упираетесь: если с максимальными ресурсами в контейнере заметно медленнее, чем локально, значит проблема не в докере, а в версиях node/php/...
Это конечно же будет баян, но НУЖНО СТАВИТЬ ЛИНУКС и все у вас будет работать хорошо. Я заметил это еще года три назад. Сначала парился с окнами, потом с маком, в итоге пилю все проекты в Ubuntu и не знаю проблем, кроме одной - отсутствие скетча или фотошопа, что конечно же бесит, но если вам с ними работать только в readonly то можно выгружать в Zeplin и брать оттуда. Единственное что я хочу попробовать это перейти на более свежее мак железо и софт и там возможно что-то стало по другому, но это все условности... если даже и будет быстро то это не открытие странички сайта за 100-200мс, а в районе 1 секунды, что не есть результат
Зачем лишать себя всех радостей окон?
Vmware в помощь. Никаких проблем ни с совместимостью, ни с быстродействием нет.
Накатываешь 10 дебиан и кодишь в винде. Пересобираешь на дебиане, тк есть прямое монтирование разделов в виртуалку.
Все дело в работе проброшенной внутрь докера папки (примонтированной фс внутри контейнера). Обратите внимание, если скопировать файлы проекта в соседнюю папку внутри контейнера (например, если маунт идет в /app, то cp -r /app /app2) и там запустить npm install (или что угодно), то это произойдет сопоставимо быстро, как на родной системе (упрется в ограничение ресурсов докера). Решения лично у меня нет, но причина ясна.
Хз актуально ли еще кому, но медленный докер десктоп на винде - из-за линух контейнеров. Долой их гнать! Все эти сказки про: "wsl 2 гораздо быстрее" - чушь собачья. Переходите на windows контейнеры. Правая кнопка мыши на докере в трее -> перейти на windows контейнеры. Далее выставляете настройки вот так:
Все. Теперь сайты раза в 3-4 быстрее будут работать на докере. Пробовал на 2х компах и одних и тех же проектах - результаты идентичны. Сразу оговорюсь, что я у меня на сервере нет докера, и нет связи серверного докера с докером на компе. У кого есть - может будут проблемы, я не знаю. А вот чисто для разработки под виндой - рабочее решение.
Я просто выключил WSL2, пересобрал контейнеры и запрос к локальному сайту вместо 7,5 секунд стал 1,7 секунды (в линуксе это было 200-300мс).
Переключение на Win контейнеры не дало никакого эффекта.
Проблема проброшенных папок. Переносить их внутрь контейнера не вариант, заморачиваться с внешними решениями не охота. Пока приемлемая скорость для разработки.