Задать вопрос
@Artem0071
Безработный mr. Junior

Можно ли запустить npm локально через Docker?

Только пытаюсь разобраться в докере, просьба особо не ругаться

Есть проект, в нем есть package.json файл

Пытаюсь установить все что там есть не используя npm локально, а как нибудь через докер

Пишу команду: docker run node npm install
В ответ ошибка:
npm WARN saveError ENOENT: no such file or directory, open '/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/package.json'
npm WARN !invalid#2 No description
npm WARN !invalid#2 No repository field.
npm WARN !invalid#2 No README data
npm WARN !invalid#2 No license field.


Хотя в текущей директории есть этот файл
Что не так тут происходит?
  • Вопрос задан
  • 297 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Предположу, что проект и его package.json находятся на хосте в текущей папке.
Тогда команда:
docker run -it --rm -v "$PWD":/usr/src/app -w /usr/src/app node npm install


Подробнее:
docker run                  \
  -it                       \  // интерактивно и с терминалом
  --rm                      \  // удалить контейнер после выхода
  -v "$PWD":/usr/src/app    \  // текущую папку на хосте смонтировать в контейнер
  -w /usr/src/app           \  // в конт. сделать текущей папкой смонтированную
  node                      \  // образ с nodejs
  npm install                  // команда
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Arik
нужно примонтировать папку на лету и желательно за собой удалить контейнер, раз хотите напрямую образ запускать каждый раз
мой .bash_profile
function docker-npm() {
    docker run -it --rm -v app-sync:/var/www/sites:nocopy -w=$(pwd) node npm "$@"
}

// -v app-sync:/var/www/sites:nocopy на свое правим
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы