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
Latest posts by Ajitesh Kumar (see all)
- Agentic Reasoning Design Patterns in AI: Examples - October 18, 2024
- LLMs for Adaptive Learning & Personalized Education - October 8, 2024
- Sparse Mixture of Experts (MoE) Models: Examples - October 6, 2024
I found it very helpful. However the differences are not too understandable for me