Не удается установить зависимости npm при создании образа докера

Я создаю образ из Dockerfile, и часть, где я npm устанавливаю зависимости, вызывает ошибку при сборке образа, но я могу запускать команды вне его. Я не знаю точно, откуда эта ошибка.

Я использую boot2docker в Windows, и мой Dockerfile:

FROM ubuntu:15.04

RUN apt-get -y update 
RUN apt-get -y install nodejs 
RUN apt-get -y install npm 

COPY /server /src
COPY /server/package.json /tmp/package.json

RUN cd /tmp && npm install

(etc)

Сообщение об ошибке:

sh:1 node: not found
npm WARN: This failure might be due to the use of legacy binary "node"
npm WARN: For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! [email protected] preinstall: 'node ./lib/preinstall_npmcheck.js'
npm ERR! Exit status 127
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem iwth the sails package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!      node ./lib/preinstall_npmcheck.js
npm ERR! You can get their info via:
npm ERR!      npm owner ls sails
npm ERR! There is additional logging output above.

npm ERR! System Linux 4.0.3-boot2docker
npm ERR! command "usr/bin/nodejs" "/usr/bin/npm" "install"

npm ERR! node -v v0.10.25
npm ERR! npm -v 1.4.21
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!      /tmp/npm-debug.log
npm ERR! not ok code 0
INFO[0633] THe command [/bin/sh -c cd /tmp && install] returned a non-zero code: 1

Хотя он говорит, что это, вероятно, проблема с Sails, у меня нет проблем с его установкой на мою машину. Я не могу установить его, когда запускаю образ (очевидно), и когда я пытаюсь просто запустить образ ubuntu:15.04 и установить туда npm и Sails, он говорит мне, что npm — это command not found.

Я все еще новичок в Docker (и в Windows - я даже не могу найти npm-debug.log), поэтому любой совет очень помогает.

Спасибо!


person Mina Han    schedule 23.06.2015    source источник


Ответы (1)


Это проблема установки nodejs, которая была рассмотрена здесь: различия между node.js и node?

Вкратце, есть три варианта исправить это: создать символическую ссылку самостоятельно, использовать nvm или установить nodejs-legacy вместо nodejs:

RUN apt-get -y install nodejs-legacy

person Alex V    schedule 24.06.2015
comment
Потрясающий! Чем вы так много :) - person Mina Han; 24.06.2015