Como instalar o nó mais recente dentro de um contêiner de docker

26

Como instalo o nó mais recente dentro de um contêiner do docker ubuntu 15.10? apt-get install nodejsinstala a versão 0.1 e sem npm

obrigado

Tomasz
fonte
Você resolveu isso? Para mim, ele instala o npm v 3.10, não pode obter mais de 6 anos
simPod

Respostas:

31

OK, entendi,

# 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

Use curl -sL https://deb.nodesource.com/setup_5.x | bashpara o nó 5.x

Substitua 5pela versão do nó desejado, por exemplo, 8, 12, etc.

Tomasz
fonte
12
Vi essas mesmas instruções em toda a web, mas não consigo instalar o npm. Depois de executar o apt-get -y install nodejs, executar um comando npm não funciona. Eu entendo/bin/sh: 1: npm: not found
Alex White
Eu tenho o mesmo problema.
E finalmente
E se eu quiser ter a versão exata como 8.9.4? O comando acima falha.
Sourav Prem
2
Veja isso . Na seção LEIA-ME, explica como obter uma versão diferente. Além disso, o 4 está sendo finalizado, portanto, não use exatamente o comando acima.
Nathaniel Ford
/bin/sh: apt-get: command not found /bin/sh: apk: command not foundusandoFROM amazonlinux:1
OZZIE 18/02
14

Solução atualizada a partir de janeiro de 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
Dan
fonte
mas dessa maneira você obtém a versão mais recente 11 do nodejs. e se você quiser 11.5.4?
Claudiu Creanga
Deveria ter as versões menores nesse registro deb, substitua o X por 5.4 (não testado do meu lado)
Dan
Isso não é uma boa prática. Você não o executará como root!
Khalid
10

É assim que eu instalo o nodeJS em um contêiner. No meu caso, estou usando uma imagem base nginx.

Use o seguinte comando

    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

O GNUPG é necessário pelo instalador do nodeJS. Sem ele, você receberá a seguinte mensagem de erro;

[91mE: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
Sábio
fonte
4

Você pode adicionar uma única linha ao seu Dockerfile.

FROM node:8.2

Há uma lista de nomes de tags suportados aqui: https://hub.docker.com/_/node/

laboratórios positivos
fonte
27
Esta resposta não ajuda ninguém a usar uma imagem base diferente.
Charles Offenbacher
Em seguida, eles podem usar a resposta de Tomasz
laboratórios posit
2

instalando o nodejs v8 com a imagem base do 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

Também instalei algumas dependências extras necessárias para que você possa limpar esse código de acordo com suas necessidades. Mas ele instala o nodejs & npm & nodemon.

Lukas
fonte
1

Estou usando o Dockerfile a seguir para configurar o nó versão 8.10.0.

Aqui eu usei o NVM (Node Version Manager) , para que possamos escolher qual versão do nó deve ser instalada nesse contêiner. Por favor, use o caminho absoluto do npm ao instalar os módulos do nó (por exemplo: /root/.nvm/versions/node/v${NODE_VERSION}/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

Nota: Este é um Dockerfile recortado.

Sijo M Cyril
fonte