Внутри Docker VM, Gulp -Watch Кажется, что не очень хорошо работает на томах, размещенных с главной операционной системы

Итак, у меня есть настройка, возможно, как и большинство людей, где их код приложения монтируется в контейнер Docker через отдельный том.

Проблема заключается в том, что если я запустил gulp и специально gulp -watch, чтобы следить за изменениями файлов и т.д. в докере, в коде приложения, установленном в контейнере докера, для правильной сборки и перезапуска node в контейнере докера, по мере необходимости, он, как представляется, получает интенсивность процессора (как при опросе изменений файлов, а не при прослушивании событий изменения файла) до точки, где моя машина прячется.

Я думаю, что это связано с ограничением наличия файловой системы, смонтированной с собственного хоста, в контейнере докеров, но как люди работают вокруг этого? Выполняют ли они всю свою работу в контейнере? Собственный хозяин затем постоянно строит? Или мне не хватает чего-то, где моя установка неверна с помощью gulp -watch/nodemon?

Ответ 1

Попробуйте изменить параметры gulp.watch . Это было намного лучше для меня:

gulp.watch('./**/*', {interval: 1000, mode: 'poll'}, ['build']);

Ответ 2

Для тех, кто использует gulp4

Единственный способ заставить это работать - использовать "usePolling", как показано ниже

gulp.watch('./**/*', {interval: 1000, usePolling: true}, gulp.series('superTask'));

Ответ 3

Вы должны использовать плагин 'gulp -watch' вместо gulp.watch. Последний использует опрос статистики, который слишком тяжел для общей файловой системы. 'gulp -watch' использует inotify события для просмотра файловой системы в OSX.

Ответ 4

Ответ Джесси не помог мне, но это было действительно близко. Теперь этот параметр выглядит следующим образом:

gulp.watch('./**/*', {interval: 1000, usePoll: true}, ['build']);

Поле mode было отключено для флага поля usePoll.

Подробнее см. раздел API.

Ответ 5

Предыдущий ответ usePoll: true не работал. Этот сделал:

gulp.watch('./**/*', {interval: 1000, usePolling: true}, ['build']);