Last active
July 24, 2024 15:05
-
-
Save garystafford/07fbfe8fde48c3f5810c to your computer and use it in GitHub Desktop.
Install the latest versions of Node.js and npm into a Docker Ubuntu container, with or without need for root access. Easily update both applications to the latest versions. Creates a new user account ('testuser') and installs common npm packages.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################### | |
# Version 1: using ‘apt-get install’ | |
# Installs using apt-get | |
# Requires update to npm afterwards | |
# Harder to get latest copy of node | |
# Requires sudo to use npm | |
############################################################################### | |
# create new docker ubuntu container | |
sudo docker run -i -t ubuntu /bin/bash # drops you into container as root | |
# update and install all required packages (no sudo required as root) | |
# https://gist.github.com/isaacs/579814#file-only-git-all-the-way-sh | |
apt-get update -yq && apt-get upgrade -yq && \ | |
apt-get install -yq curl git nano | |
# install from nodesource using apt-get | |
# https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-an-ubuntu-14-04-server | |
curl -sL https://deb.nodesource.com/setup | sudo bash - && \ | |
apt-get install -yq nodejs build-essential | |
# fix npm - not the latest version installed by apt-get | |
npm install -g npm | |
# add user with sudo privileges within Docker container | |
# without adduser input questions | |
# http://askubuntu.com/questions/94060/run-adduser-non-interactively/94067#94067 | |
USER="testuser" && \ | |
adduser --disabled-password --gecos "" $USER && \ | |
sudo usermod -a -G sudo $USER && \ | |
echo "$USER:abc123" | chpasswd && \ | |
su - $USER # switch to testuser | |
# install common full-stack JavaScript packages globally | |
# http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation | |
sudo npm install -g yo grunt-cli bower express | |
# optional, check locations and packages are correct | |
which node; node -v; which npm; npm -v; \ | |
npm ls -g --depth=0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################### | |
# Version 2: using curl, make, and npmjs.org’s install script | |
# Installs using make and shell script | |
# Easier to update node and npm versions in future | |
# Requires sudo to use npm | |
############################################################################### | |
# create new docker ubuntu container | |
sudo docker run -i -t ubuntu /bin/bash # drops you into container as root | |
# update and install all required packages (no sudo required as root) | |
# https://gist.github.com/isaacs/579814#file-only-git-all-the-way-sh | |
apt-get update -yq && apt-get upgrade -yq && \ | |
apt-get install -yq g++ libssl-dev apache2-utils curl git python make nano | |
# install latest Node.js and npm | |
# https://gist.github.com/isaacs/579814#file-node-and-npm-in-30-seconds-sh | |
mkdir ~/node-latest-install && cd $_ && \ | |
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 && \ | |
make install && \ # takes a few minutes to build... | |
curl https://www.npmjs.org/install.sh | sh | |
# add user with sudo privileges within Docker container | |
# without adduser input questions | |
# http://askubuntu.com/questions/94060/run-adduser-non-interactively/94067#94067 | |
USER="testuser" && \ | |
adduser --disabled-password --gecos "" $USER && \ | |
sudo usermod -a -G sudo $USER && \ | |
echo "$USER:abc123" | chpasswd && \ | |
su - $USER # switch to testuser | |
# install common full-stack JavaScript packages globally | |
# http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation | |
sudo npm install -g yo grunt-cli bower express | |
# optional, check locations and packages are correct | |
which node; node -v; which npm; npm -v; \ | |
npm ls -g --depth=0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################### | |
# Version 3: version 2 without requiring ‘sudo’ to use npm | |
# Does NOT require sudo to use npm | |
############################################################################### | |
# create new docker ubuntu container | |
sudo docker run -i -t ubuntu /bin/bash # drops you into container as root | |
# update and install all required packages (no sudo required as root) | |
# https://gist.github.com/isaacs/579814#file-only-git-all-the-way-sh | |
apt-get update -yq && apt-get upgrade -yq && \ | |
apt-get install -yq g++ libssl-dev apache2-utils curl git python make nano | |
# add user with sudo privileges within Docker container | |
# without adduser input questions | |
# http://askubuntu.com/questions/94060/run-adduser-non-interactively/94067#94067 | |
USER="testuser" && \ | |
adduser --disabled-password --gecos "" $USER && \ | |
sudo usermod -a -G sudo $USER && \ | |
echo "$USER:abc123" | chpasswd && \ | |
su - $USER # switch to testuser | |
# setting up npm for global installation without sudo | |
# http://stackoverflow.com/a/19379795/580268 | |
MODULES="local" && \ | |
echo prefix = ~/$MODULES >> ~/.npmrc && \ | |
echo "export PATH=\$HOME/$MODULES/bin:\$PATH" >> ~/.bashrc && \ | |
. ~/.bashrc && \ | |
mkdir ~/$MODULES | |
# install Node.js and npm | |
# https://gist.github.com/isaacs/579814#file-node-and-npm-in-30-seconds-sh | |
mkdir ~/node-latest-install && cd $_ && \ | |
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 && \ | |
./configure --prefix=~/$MODULES && \ | |
make install && \ # takes a few minutes to build... | |
curl https://www.npmjs.org/install.sh | sh | |
# install common fullstack JavaScript packages globally | |
npm install -g yo grunt-cli bower express | |
# optional, check locations and packages are correct | |
which node; node -v; which npm; npm -v; \ | |
npm ls -g --depth=0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In the first example it is the
apt-get install npm
is missing afterapt-get install -yq curl git nano
or simply replace it with:
apt-get install -yq curl git nano npm