How do I install the latest node inside a docker ubuntu 15.10 container? apt-get install nodejs installs version 0.1 and no npm
Thanks
110 Answers
OK got it,
# update apt-get update # install curl apt-get install curl # get install script and pass it to execute: curl -sL | bash # and install node apt-get install nodejs # confirm that it was successful node -v # npm installs automatically npm -v Use curl -sL | bash for node 5.x
Replace 5 by your desired node version e.g. 8, 12, etc.
Updated solution as of Jan 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 | bash - RUN apt-get -y install nodejs RUN npm install 3This is how I have been installing nodeJS into a container. In my case, I am using an nginx base image.
Use the following command
apt-get update -yq \ && apt-get install curl gnupg -yq \ && curl -sL | bash \ && apt-get install nodejs -yq GNUPG is needed by the nodeJS installer. Without it, you will get the following error message;
[91mE: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation 1You can add a single line to your Dockerfile.
FROM node:8.2 There is a list of supported tag names here:
2Here is my Dockerfile to do this:
FROM ubuntu:20.04 RUN apt update # We directly answer the questions asked using the printf statement RUN printf 'y\n1\n\1n' | apt install nodejs RUN apt install -y npm Here we do our docker build:
docker build -t mynpm . Here is the version check to verify its success:
docker run -it mynpm npm -v The output I get as a result is: 6.14.4
installing nodejs v8 with ubuntu 16.04 base image:
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 | 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 I also installed some extra dependencies I need so you can clean up this code for your needs. But it installs nodejs & npm & nodemon.
2I am using following Dockerfile to setup node version 8.10.0.
Here I have used NVM (Node Version Manager ), so we can choose which node version should be installed on that container. Please use absolute path of npm when installing node modules (eg: /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- | 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 Note: This is a cropped Dockerfile.
You can install node on ubuntu this way:
ARG NODE_VERSION=16 FROM ubuntu:latest RUN apt-get update -y && \ apt-get upgrade -y && \ apt-get install -y && \ curl -sL | bash - && \ apt-get install -y nodejs From Node official docker image:
# Install node and npm: ENV NODE_VERSION 14.18.2 RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && case "${dpkgArch##*-}" in \ amd64) ARCH='x64';; \ ppc64el) ARCH='ppc64le';; \ s390x) ARCH='s390x';; \ arm64) ARCH='arm64';; \ armhf) ARCH='armv7l';; \ i386) ARCH='x86';; \ *) echo "unsupported architecture"; exit 1 ;; \ esac \ && curl -fsSLO --compressed "" \ && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ # smoke tests && node --version \ && npm --version You can combine two docker images:
FROM node:16 AS node_base FROM ubuntu:bionic COPY --from=node_base / / 0