Как установить последний узел внутри Docker-контейнера

26

Как установить последний узел внутри контейнера Docker Ubuntu 15.10? apt-get install nodejsустанавливает версию 0.1 и не npm

Благодарность

Tomasz
источник
Вы решили это? Для меня он устанавливает npm v 3.10, не может получить 6+
simPod

Ответы:

31

Хорошо понял,

# update 
apt-get update
# install curl 
apt-get install curl
# get install script and pass it to execute: 
curl -sL https://deb.nodesource.com/setup_4.x | bash
# and install node 
apt-get install nodejs
# confirm that it was successful 
node -v
# npm installs automatically 
npm -v

Использовать curl -sL https://deb.nodesource.com/setup_5.x | bashдля узла 5.x

Замените 5на нужную версию узла, например, 8, 12 и т. Д.

Tomasz
источник
12
Я видел эти же инструкции по всему Интернету, но я не могу заставить его установить npm. После запуска команда apt-get -y install nodejsnpm не работает. Я получаю/bin/sh: 1: npm: not found
Алекс Уайт
У меня та же проблема.
И, наконец,
Что если я хочу иметь точную версию 8.9.4? Вышеприведенная команда не выполняется.
Сурав Прем
2
Смотрите это . В разделе README объясняется, как получить другую версию. Кроме того, 4 истекает, так что не используйте команду выше точно.
Натаниэль Форд
/bin/sh: apt-get: command not found /bin/sh: apk: command not foundиспользуяFROM amazonlinux:1
Оззи
14

Обновленное решение по состоянию на январь 2019 года:

FROM ubuntu:latest
USER root
WORKDIR /home/app
COPY ./package.json /home/app/package.json
RUN apt-get update
RUN apt-get -y install curl gnupg
RUN curl -sL https://deb.nodesource.com/setup_11.x  | bash -
RUN apt-get -y install nodejs
RUN npm install
Дэн
источник
но так вы получите последнюю версию 11 nodejs. что если вы хотите 11.5.4?
Клавдиу Крянгэ
Должно быть до второстепенных версий в этом реестре deb, просто замените X на 5.4 (непроверенный на моей стороне)
Дэн
Это не хорошая практика. Вы не будете запускать его как root!
Халид
10

Вот как я устанавливал nodeJS в контейнер. В моем случае я использую базовое изображение nginx.

Используйте следующую команду

    apt-get update -yq \
    && apt-get install curl gnupg -yq \
    && curl -sL https://deb.nodesource.com/setup_8.x | bash \
    && apt-get install nodejs -yq

GNUPG необходим установщику nodeJS. Без этого вы получите следующее сообщение об ошибке;

[91mE: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
шалфей
источник
4

Вы можете добавить одну строку в ваш Dockerfile.

FROM node:8.2

Список поддерживаемых имен тегов здесь: https://hub.docker.com/_/node/

Posit Labs
источник
27
Этот ответ не помогает никому использовать другое базовое изображение.
Чарльз Оффенбахер
Тогда они могут использовать ответ Томаша
posit labs
2

установка nodejs v8 с базовым образом Ubuntu 16.04:

FROM ubuntu:16.04

WORKDIR /app

RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment
RUN echo "LANG=en_US.UTF-8" >> /etc/environment
RUN echo "NODE_ENV=development" >> /etc/environment
RUN more "/etc/environment"
#RUN locale-gen en_US en_US.UTF-8
#RUN dpkg-reconfigure locales

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get dist-upgrade -y
RUN apt-get install curl htop git zip nano ncdu build-essential chrpath libssl-dev libxft-dev pkg-config glib2.0-dev libexpat1-dev gobject-introspection python-gi-dev apt-transport-https libgirepository1.0-dev libtiff5-dev libjpeg-turbo8-dev libgsf-1-dev fail2ban nginx -y

# Install Node.js
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
RUN apt-get install --yes nodejs
RUN node -v
RUN npm -v
RUN npm i -g nodemon
RUN nodemon -v

# Cleanup
RUN apt-get update && apt-get upgrade -y && apt-get autoremove -y

Я также установил некоторые дополнительные зависимости, которые мне нужны, чтобы вы могли очистить этот код для своих нужд. Но он устанавливает nodejs & npm & nodemon.

Lukas
источник
1

Я использую следующий Dockerfile для установки версии узла 8.10.0.

Здесь я использовал NVM (Node Version Manager) , поэтому мы можем выбрать, какая версия узла должна быть установлена ​​в этом контейнере. Пожалуйста, используйте абсолютный путь npm при установке модулей узла (например: /root/.nvm/versions/node/v$ndomNODE_VERSION enj/bin/npm install leasot @ latest -g)

   FROM ubuntu:18.04
   ENV NODE_VERSION=8.10.0
   RUN apt-get update && \
       apt-get install wget curl ca-certificates rsync -y
   RUN wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
   ENV NVM_DIR=/root/.nvm
   RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION}
   RUN . "$NVM_DIR/nvm.sh" &&  nvm use v${NODE_VERSION}
   RUN . "$NVM_DIR/nvm.sh" && nvm alias default v${NODE_VERSION}
   RUN cp /root/.nvm/versions/node/v${NODE_VERSION}/bin/node /usr/bin/
   RUN cp /root/.nvm/versions/node/v${NODE_VERSION}/bin/npm /usr/bin/
   RUN /root/.nvm/versions/node/v${NODE_VERSION}/bin/npm install  leasot@latest -g

Примечание. Это обрезанный файл Dockerfile.

Сийо М Кирилл
источник