Уже 2 месяца использую Docker для разработки.

Это очень удобно, если ты работаешь в команде - у всех разные рабочие окружения, версии операционных системы и т.д., а Docker позволяет убрать эту разницу и автоматизировать создание проекта. Я уж молчу про всякое legacy, когда нужно работать с древними версиями библиотек, которые уже не устанавливаются.

Но есть проблема - работа Docker на MacOS не отличается высокой скоростью из-за особенностей файловой системы. В прошлой заметке я советовал использовать Mutagen для обхода этой проблемы, но и с ним не всё так радужно. Например, я словил несколько неприятных проблем с синхронизацией файлов, когдя они уже удалены в исходниках, но как-то сохраняются в контейнере из-за кэша Mutagen.

Скорость выше, да, но подобные особенности не радуют.

А тут оказалось, что аж с марта в Docker на MacOS Monterey доступны эксперементальные функции, как раз для улучшения работы с файловой системой.

Немедленно включил и замерил разницу, на этот раз не на установке пакетов, которые кэшируются по всякому, а на сборке фронтенда Vesp текущей версии.

git clone https://github.com/bezumkin/vesp.git
cd vesp/docker/
cp .env.dist .env

rm -rf ../frontend/dist && docker-compose up --build

Все тесты прогоняем по 3 раза.

Стандартный Docker:

  • 83.92s
  • 80.40s
  • 88.51s

Docker + Mutagen

rm -rf ../frontend/dist && mutagen-compose up --build
  • 80.24s
  • 81.69s
  • 81.42s

Никакой особой разницы для сборки не видно - примерно такая же скорость, как и без Mutagen, в пределах погрешности. Видимо в прошлый раз Mutagen быстро ставил зависимости с помощью своего кэширования.

Docker + новый VirtioFS

  • 27.88s
  • 29.36s
  • 29.66s

А вот тут уже впечатляющие результаты - почти в 3 раза быстрее!

Docker + VirtioFS + Mutagen

  • 31.55s
  • 29.93s
  • 28.98s

Получается, что при включении VirtioFS вы можете смело выбрасывать Mutagen - никакой прибавки в скорости он не даёт, но зато занимает больше места на диске из-за дополнительных volumes, и может добавить проблем с кэшем.

Сборка вообще без Docker, для понимания сколько мы теряем на виртуализации:

cd ../frontend/
rm -rf ./dist && yarn generate
  • 17.14s
  • 15.14s
  • 14.51s

VirtioFS - отличный шаг вперёд для Docker на MacOS, надеюсь на выходе в релиз он станет еще быстрее.

Комментарии (1)
Сергей Лелеко
26.09.2022 10:22

Тоже задействовал! Прекрасная функция!

born2slip
pishnaa istntome
22.11.2022 14:06
огромное спасибо! )
inetlover
Александр Наумов
14.11.2022 10:19
посмотри документацию. Спасибо, что-то она мне не нагуглилась. Это просто функции объединения для о...
bezumkin
Василий Наумкин
10.11.2022 05:46
Спасибо за поздравления!
inetlover
Александр Наумов
09.11.2022 17:08
Посмотрел в ДевТулсе свойство overscroll-behavior: none; присутствует, проверил в Chrome и Chromium ...
bezumkin
Василий Наумкин
03.11.2022 20:57
Поискать в исходниках ссылки на её адрес и поменять - скорее всего только nuxt.config.js. А зачем эт...
ni.kolokol@mail.ru
Николай Каленников
03.11.2022 19:43
Спасибо. Попробую тоже с нуля переставить
inetlover
Александр Наумов
03.11.2022 19:24
Спасибо!!! Все заработало!
bezumkin
Василий Наумкин
28.10.2022 05:23
В тексте есть подсказка // Контроллер требует новое разрешение protected $scope = 'ord...
bezumkin
Василий Наумкин
27.10.2022 13:25
Понял, спасибо!
inetlover
Александр Наумов
23.10.2022 13:33
Понял, спасибо!