Cómo instalar el último nodo dentro de un contenedor acoplable

26

¿Cómo instalo el último nodo dentro de un contenedor docker ubuntu 15.10? apt-get install nodejsinstala la versión 0.1 y no npm

Gracias

Tomász
fuente
¿Lo resolviste? Para mí instala npm v 3.10, no puedo obtener 6+
simPod

Respuestas:

31

Ok lo tengo,

# 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

Uso curl -sL https://deb.nodesource.com/setup_5.x | bashpara el nodo 5.x

Reemplace 5por la versión de nodo deseada, por ejemplo, 8, 12, etc.

Tomász
fuente
12
He visto estas mismas instrucciones en toda la web, pero no consigo que instale npm. Después de ejecutar el apt-get -y install nodejs, ejecutar un comando npm no funciona. Obtengo/bin/sh: 1: npm: not found
Alex White
Tengo el mismo problema.
Y finalmente
¿Qué sucede si quiero tener la versión exacta como 8.9.4? El comando anterior falla.
Sourav Prem
2
Mira esto . En la sección README, explica cómo obtener una versión diferente. Además, 4 está siendo finalizado, así que no use el comando anterior exactamente.
Nathaniel Ford el
/bin/sh: apt-get: command not found /bin/sh: apk: command not foundusandoFROM amazonlinux:1
OZZIE
14

Solución actualizada a partir de enero 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
fuente
pero de esta manera obtienes la última versión 11 de nodejs. ¿Qué pasa si quieres 11.5.4?
Claudiu Creanga
Debería haber reducido a las versiones menores en ese registro de deb, simplemente reemplace la X con 5.4 (no probado por mi parte)
Dan
Esta no es una buena práctica. ¡No lo ejecutarás como root!
Khalid el
10

Así es como he estado instalando nodeJS en un contenedor. En mi caso, estoy usando una imagen base nginx.

Usa el siguiente 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

GNUPG es necesario para el instalador de nodeJS. Sin él, recibirá el siguiente mensaje de error;

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

Puede agregar una sola línea a su Dockerfile.

FROM node:8.2

Aquí hay una lista de nombres de etiquetas compatibles: https://hub.docker.com/_/node/

laboratorios de posit
fuente
27
Esta respuesta no ayuda a nadie que use una imagen base diferente.
Charles Offenbacher el
Luego pueden usar la respuesta de Tomasz
posit labs
2

instalación de nodejs v8 con la imagen base de 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

También instalé algunas dependencias adicionales que necesito para que pueda limpiar este código según sus necesidades. Pero instala nodejs & npm & nodemon.

Lukas
fuente
1

Estoy usando el siguiente Dockerfile para configurar el nodo versión 8.10.0.

Aquí he usado NVM (Node Version Manager) , para que podamos elegir qué versión de nodo se debe instalar en ese contenedor. Utilice la ruta absoluta de npm al instalar módulos de nodo (por ejemplo: /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 es un Dockerfile recortado.

Sijo M Cyril
fuente