Docker – Create Javascript Development Environment

This article represents Dockerfile code sample which could be used to create Javascript Development environment. Please feel free to comment/suggest if I missed to mention one or more important points. Also, sorry for the typos.

Following are the key points described later in this article:

  • Javascript Development environment
  • Dockerfile representing JS Development Environment
  • One script used for Images/Containers
Javascript Development Environment

Following tools are installed to make Javascript development environment.

  • NodeJS runtime
  • Typescript compiler
  • Grunt-cli
  • Bower
  • JSHint for code quality check
  • Jasmine for unit tests
Dockerfile representing JS Development Environment

Following dockerfile (nodejs_base.df) could be used to create NodeJS base image and represents NodeJS runtime.

# Use centos6 base image
FROM    centos:centos6

# Enable Extra Packages for Enterprise Linux (EPEL) for CentOS
RUN     yum install -y epel-release

# Install Node.js and npm
RUN     yum install -y nodejs npm

Following Dockerfile (javascript.df) is used to create Javascript Dev Environment image representing following tools:

  • Typescript compiler
  • Grunt-cli
  • Bower
  • JSCS
  • Browserify
  • JSHint for code quality check
  • Jasmine for unit tests
FROM  nodejs_base

# Install Typescript
RUN npm install -g typescript

# Install Grunt CLI
RUN npm install -g grunt-cli

# Install Bower
RUN npm install -g bower

# Install jshint
RUN npm install -g jshint

# Install Browserify
RUN npm install -g browserify

# Install JSCS
RUN npm install -g jscs

# Install Jasmine
RUN npm install -g jasmine

RUN mkdir /spec
RUN mkdir /spec/support

RUN jasmine init
One script used for Images/Containers

Following script (installJS.sh) could be used to create Javascript Dev environment. It includes following:

  • Creation of NodeJS runtime image
  • Creation of Javascript tools image
#!/bin/sh

if [ $# == 0 ]; then
  echo "This script expect container name argument. Example: ./installTS.sh jsdev"
  exit 100
fi

docker stop $1;docker rm $1

# Build NodeJS image if it does not exists
#
nb_image="nodejs_base"
nb_df="nodejs_base.df"
if [ `docker images $nb_image | wc -l` -lt 2 ]; then
  echo "Docker Image $nb_image do not exist..."
  echo "Builing docker image $nb_image"
  if [ -f $nb_df ]; then
    docker build -t $nb_image -f $nb_df .
  else
    echo "Can't find Dockerfile $nb_df in the current location"
    exit 200
  fi
fi

# Build Typescript image if it does not exists
#
js_image="javascript"
js_df="javascript.df"
if [ `docker images $js_image | wc -l` -lt 2 ]; then
  echo "Docker Image $js_image do not exist..."
  echo "Builing docker image $js_image"
  if [ -f $js_df ]; then
    docker build -t $js_image -f $js_df .
  else
    echo "Can't find Dockerfile $js_df in the current location"
    exit 200
  fi
fi

docker run --privileged=true -ti -dP --name $1 -v /c/Users:/mnt/Users $js_image /bin/bash		

 

Ajitesh Kumar

Ajitesh Kumar

I have been recently working in the area of Data analytics including Data Science and Machine Learning / Deep Learning. I am also passionate about different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia, etc, and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data, etc. I would love to connect with you on Linkedin. Check out my latest book titled as First Principles Thinking: Building winning products using first principles thinking.
Posted in Dockers, Javascript. Tagged with , .