У меня есть докционированный проект с тремя приложениями и тремя базами данных. Три приложения написаны на узле и, как обычно, используют npm
.npm install with docker-compose project
У меня есть сценарий, который клонирует три операции РЕПО, docker-compose.yaml
монтирует три контейнеров и использует Dockerfile
для каждого из трех проектов, в основном просто сделать npm install
и запустить их.
Все это прекрасно работает, но цель этого упражнения - сделать кластер проектов легким в настройке и запуске для целей разработки. Фактически работа над кодом проекта не является проблемой, так как она клонируется разработчиком, но npm install
осуществляется через докер и, следовательно, с корнем. Это означает, что node_modules
в репозиториях принадлежит root.
Разработчик не может просто сделать npm install
, чтобы добавить новый пакет в репо, потому что у них не будет разрешений на node_modules
, и модуль, возможно, будет построен с другой архитектурой в зависимости от их хост-системы.
Я думал о создании сценария, который работает npm install
в контейнере вместо этого, но есть несколько предостережений:
root
будет владетьpackage.json
- Это разбивает поток разработчика типичного узла ... они используются, чтобы просто делать
npm install
Как я уже говорил выше, весь смысл это сделать его как легко прыгать и развиваться как можно, так что я хочу, чтобы получить как насколько я могу.
Есть ли какие-либо предложения по обработке установки узлов в контейнере докеров для разработки проекта?
Ваш ответ имеет смысл, но только пара наблюдений. Является ли '1000' UID, который я хочу использовать каждый раз? Не могли бы вы также подробнее остановиться на вашем последнем абзаце. Какую версию рассогласования вы имеете в виду? Кроме того, они будут редактировать и работать с кодом на своем хост-компьютере, а не в контейнере (хотя до тех пор, пока я мог бы документировать, как я охотно принимаю выполнение «npm install» через контейнер) –
'1000' в этом случае является просто предоставленное значение по умолчанию, иначе '--build-arg HOST_UID =' становится требованием даже начать сборку. По несоответствию версии я ссылался на инструменты на узле devs и внутри контейнера. Использование IDE вашего хоста в порядке. –