How to Dockerize NodeJS web app – part 1

Many teams, companies and companies had a struggle in containerizing their NodeJS web apps. There were many reasons behind it. There are multiple ways to dockerize a NodeJS and we will the some of the efficient ways that worked for me and are running successfully in production. When we were trying to create a docker image for our Node JS based application, we chose to use the official Node docker image (~700MB). On top of that we need to add the node modules, business logic, etc and so on. The final image size was staggering (~1.2GB). It was not what we wanted. Secondly, the average build time to do NPM install and run a grunt task totally took 15 minutes for every build. I am not even talking about the pain of configuring this for different CI/CD pipelines and environments. The initial docker file was looking something like this: #Initial Docker File FROM node:6.10.1-alpine ENV APP_ENV $APP_ENV ENV BINPATH /usr/bin COPY wkhtmltox/bin/wkhtmltopdf /usr/local/bin/ RUN mkdir -p /usr/src/app WORKDIR /usr/src/app/ # Install app dependencies COPY package.json /usr/src/app/ #COPY start.sh /usr/src/app/ RUN npm install –production RUN npm install -g grunt-cli@1.2.0 # Bundle app source COPY . /usr/src/app # Install pm2 so we

Continue reading »