Categories: DockersJavascript

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

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.

Share
Published by
Ajitesh Kumar

Recent Posts

How Indexing Works in LLM-Based RAG Applications

When building a Retrieval-Augmented Generation (RAG) application powered by Large Language Models (LLMs), which combine…

1 day ago

Retrieval Augmented Generation (RAG) & LLM: Examples

Last updated: 25th Jan, 2025 Have you ever wondered how to seamlessly integrate the vast…

2 days ago

What are AI Agents? How do they work?

Artificial Intelligence (AI) agents have started becoming an integral part of our lives. Imagine asking…

3 weeks ago

Agentic AI Design Patterns Examples

In the ever-evolving landscape of agentic AI workflows and applications, understanding and leveraging design patterns…

3 weeks ago

List of Agentic AI Resources, Papers, Courses

In this blog, I aim to provide a comprehensive list of valuable resources for learning…

3 weeks ago

Understanding FAR, FRR, and EER in Auth Systems

Have you ever wondered how systems determine whether to grant or deny access, and how…

3 weeks ago