Yarn работает медленно и зависает при запуске через docker exec

#node.js #docker #docker-compose #node-modules #yarnpkg

#node.js #docker #docker-compose #узлы-модули #yarnpkg

Вопрос:

Недавно я начал использовать docker (настольную версию для Windows) для разработки моего проекта node. У меня есть файл docker-compose с конфигурацией тома для совместного использования исходных файлов проекта между моим хост-компьютером и контейнером docker.

Конечно, когда мне нужно установить новый модуль mode, я не могу этого сделать на своем хост-компьютере, потому что это Windows, а docker — Linux или что-то в этом роде, поэтому я бегу docker exec -it my-service bash , чтобы «войти» в контейнер docker, а затем запустить yarn add something его изнутри. Проблема yarn в том, что она работает очень медленно и зависает почти все время. Затем контейнер docker перестает отвечать, я не могу отменить yarn команду или остановить использование контейнера docker-compose stop . Единственный способ, который я нашел для восстановления, — перезапустить весь движок docker. Итак, чтобы окончательно установить новый модуль, после перезапуска движка docker я удаляю папку node_modules и снова выполняю те же действия. На этот раз он по-прежнему работает очень медленно, но каким-то образом не зависает и фактически устанавливает новый модуль. Но через некоторое время, когда мне нужно сделать это снова, он снова зависает, и мне снова приходится удалять node_modules …

Я хотел бы найти причины yarn , по которым команда выполняется так медленно и почему она зависает.

Я новичок в docker, поэтому, возможно, мой рабочий процесс неверен.

Я попытался увеличить лимит оперативной памяти для docker engine с 2 ГБ до 8 ГБ, а лимит процессоров — с 1 до 8, но это абсолютно не повлияло на yarn поведение команды.

В моем проекте использовался просмотр файлов chokidar , поэтому я подумал, что, возможно, это может вызвать проблему, но его отключение также не имело никакого эффекта.

Я также подумал, что проблема может заключаться в механизме обмена файлами между хост-машиной (Windows) и контейнером docker, но если это так, я не знаю, как это исправить. Я полагаю, что тогда я должен каким-то образом отделить node_modules от исходного каталога и сделать их частными для контейнера docker, чтобы они не использовались совместно с хост-машиной.

Это довольно серьезная проблема, поскольку она сильно замедляет разработку. Пожалуйста, поделитесь любыми своими идеями о том, что может быть не так. Я бы даже подумал об изменении своей среды разработки на Linux, если проблема была вызвана механизмом обмена файлами между Windows и контейнером docker.

Комментарии:

1. Вы должны иметь возможность просто использовать Node напрямую (особенно для приложения браузера). Почему вы представили Docker здесь?

2. Недавно я сам задал этот вопрос. Ну, кажется, что без docker процесс был бы проще, но он позволяет мне иметь полностью изолированные базы данных и версии узлов (короче говоря, среды) для каждого из моих проектов, и, самое главное, легко запускать проект на других машинах, то есть на моем другом компьютере или на моем компьютере.коллеги, потому что нет абсолютно никаких накладных расходов на настройку, что довольно круто. Так что, если бы проблемы с производительностью и зависанием были исправлены, я думаю, это определенно стоило бы того.

3. Мы работаем со многими разными проектами, старыми и новыми, используя старые и новые версии node, mysql и других баз данных и т.д., Так что docker вроде как окупается. Или, может быть, нет… Но тогда я просто неправильно понял, какова его фактическая цель.