Не удалось установить nvm с помощью Docker

Я работаю с библиотекой AmazonLinux для реализации лямбда-функций с использованием Node. Для этого я перехожу по этой ссылке: https://aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/

Когда я запускаю DockerFile с командами:

FROM amazonlinux

WORKDIR /tmp

#install the dependencies
RUN yum -y install gcc-c++ && yum -y install findutils

RUN touch ~/.bashrc && chmod +x ~/.bashrc

RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash

RUN source ~/.bashrc && nvm install 6.10

WORKDIR /build

При установке отображается ошибка на шаге 6: Ошибка Docker при установке узла

У меня следующая конфигурация:

  • Убунту 16.04
  • узел: 10.6.0
  • нпм: 6.1.0
  • НВМ: 0.30.2

Я получаю эту ошибку после добавления библиотеки tar в образ докера, как было предложено @Karol Samborki.

введите здесь описание изображения


person Shirsh Sinha    schedule 06.07.2018    source источник


Ответы (3)


Это определенно работает, вы забыли добавить tar и gzip, так как это требуется для извлечения пакета nvm.

FROM amazonlinux

WORKDIR /tmp

#install the dependencies
RUN yum -y install gcc-c++ tar gzip findutils

RUN touch ~/.bashrc && chmod +x ~/.bashrc

RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash

RUN source ~/.bashrc && nvm install 6.10

WORKDIR /build
person Jaydip Chabhadiya    schedule 06.07.2018

В вашем образе докера отсутствует пакет tar. Измените эту строку в вашем Dockerfile:

RUN yum -y install gcc-c++ && yum -y install findutils

to:

RUN yum -y install gcc-c++ findutils tar
person Karol Samborski    schedule 06.07.2018
comment
Привет, спасибо за решение, оно работает, но я получаю эту ошибку. - person Shirsh Sinha; 06.07.2018

Не устанавливайте nvm в образ Docker. Просто используйте правильный базовый образ node для конкретной версии node.js, которая вам нужна, или если вам действительно нужно использовать какой-то конкретный дистрибутив Linux, установите его в /usr или /usr/local.

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

person David Maze    schedule 06.07.2018