Перезапустите терминал и выполните команду, используя Dockerfile - PullRequest
0 голосов
/ 04 июля 2018

У меня есть Dockerfile, где я устанавливаю nvm. После установки мне нужно будет установить узел 5.11 с помощью nvm. Проблема в том, что после установки nvm терминал должен быть закрыт и снова запущен, чтобы была доступна команда nvm.

Мой файл Docker выглядит так:

# Installing Node
RUN Y | curl https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash
# RUN bash --login
RUN exec bash
RUN nvm install 5.11.0

# Installing Project dependencies
RUN npm install yarn -g
RUN npm install -g webpack@1.13.2

И вывод, который я получаю:

Step 5/9 : RUN exec bash
 ---> Using cache
 ---> cfcdc4c98714
Step 6/9 : RUN nvm install 5.11.0
 ---> Running in 1874de4a7715
/bin/sh: 1: nvm: not found
The command '/bin/sh -c nvm install 5.11.0' returned a non-zero code: 127

В реальном Linux после запуска https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash после закрытия и запуска терминала команда nvm становится доступной. Как мне сделать это в Dockerfile? Заранее спасибо.

1 Ответ

0 голосов
/ 04 июля 2018

Вы должны использовать предварительно созданный образ узла , в котором уже установлена ​​правильная версия node.js.

Вам не нужны такие инструменты, как nvm (rvm, virtualenv, ...), если у вас уже есть образ Docker в качестве слоя изоляции от другого программного обеспечения, которое может быть установлено на хосте; вы никогда не установили бы несколько версий языковой среды выполнения в одном образе, что может потребоваться на настольном компьютере или в системе разработчика.

...