/views-counter

Example Node.js Kubernetes app

Primary LanguageJavaScript

Views counter

Build Status

This is an example application of building Node.js project for multiple node versions at once, dockerizing & deploying it on kubernetes cluster

Live demo (may not work)

Getting started

Install dependencies:

npm install

Start the server on localhost:3000:

npm start

Build sources with babel for last Node.js version to lib/ folder:

npm run build

Run ESLint:

npm run lint

Docker

Manual build & run for specific Node.js version:

# -- Node.js v6 --
docker image build -t views-counter:6 -f dockerfiles/Dockerfile.6 . && \
docker run -it -p 3000:3000 --name views-counter views-counter:6

# -- Node.js v7 --
docker image build -t views-counter:7 -f dockerfiles/Dockerfile.7 . && \
docker run -it -p 3000:3000 --name views-counter views-counter:7

# -- Node.js v8 --
docker image build -t views-counter:8 -f dockerfiles/Dockerfile.8 . && \
docker run -it -p 3000:3000 --name views-counter views-counter:8

# -- Latest Node.js version --
docker image build -t views-counter:latest . && \
docker run -it -p 3000:3000 --name views-counter views-counter:latest

docker-compose

## -- Run all Node.js versions --
docker-compose build && \
docker-compose up -d

## ---- OR -----

## -- Run only latest Node.js version --
docker-compose build views-counter-latest && \
docker-compose up -d views-counter-latest

Now you can access multiple version of app by visiting (assuming your docker-machine address is 192.168.99.100):

Kubernetes

  1. Set up your cluster (i.e. on Google Cloud)
  2. Open .kube/app-deploy.yaml file & update image: ... to your ones
  3. Run kubectl create -f .kube/
  4. Wait until service receive external ip by checking kubectl get service vc-app
  5. Visit http://[EXTERNAL_IP]