containers #101 meetup: building a micro-service using node.js and docker - part #1

15
Containers #101 Building a micro-service using Node.js & Docker July 15

Upload: codefresh

Post on 10-Jan-2017

40 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

Containers #101Building a micro-service using Node.js & Docker July 15

Page 2: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

About the meetup • A series of 30 min webinars + 10 min

Q&A• Hands On• Session are recorded• Suggested topics and presenters are

welcome

Page 3: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

About me • Developer, entrepreneur and

technology enthusiast• Live in the Silicon Valley since

2008 • Founder and CEO of Codefresh• Member of the Node.js foundation

@RazielTabib

Page 4: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

About codefresh • A Docker platform for development

teams.• Build, Run & Test Docker containers• Launch any PR, Commit or Branch in

seconds

@codefresh

Page 5: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

What we will see today• Create base Docker image• Build a simple micro-service• Run our micro-service inside a container• Create a Docker image from an existing

container• Publish our image in Docker hub

ubuntu

Node.jsbase image

micro-service

micro-service

micro-service image

Page 6: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

TerminologyDocker ImagesBlueprints of our applicationDocker ContainerCreated from docker images and are real instances of our applicationDocker DaemonBuilding, running and distributing Docker containersDocker ClientRun on our local machine and connect to the daemonDocker HubA registry of docker images

https://www.airpair.com/node.js/posts/getting-started-with-docker-for-the-nodejs-dev

Page 7: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

TerminologyDocker ImagesBlueprints of our applicationDocker ContainerCreated from docker images and are real instances of our applicationDocker DaemonBuilding, running and distributing Docker containersDocker ClientRun on our local machine and connect to the daemonDocker HubA registry of docker images

http://thenewstack.io/understanding-the-docker-cache-for-faster-builds/

Page 8: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

Create a base image• Check boot2docker version & status

8

Raziels-Air:~ RazielMac$ boot2docker version

• search, pull & run ubuntu imageRaziels-Air:~ RazielMac$ boot2docker status

Raziels-Air:~ RazielMac$ docker search ubuntuRaziels-Air:~ RazielMac$ docker run -it ubuntu ./bin/bash

• Install nodeRaziels-Air:~ apt-get updateRaziels-Air:~ apt-get install nodejsRaziels-Air:~ apt-get install nodejs-legacy

ubuntu

Node.jsbase image

Raziels-Air:~ apt-get install npm

• Create a Docker imageRaziels-Air:~ docker commit –a “razielt” CONTAINER-ID IMAGE-NAME:tag

Page 9: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

Build a simple micro-service• Create a skeleton using express generator

9

Raziels-Air:~ RazielMac$ npm install –g express-generator

• Add an api.js with simple get function Raziels-Air:~ RazielMac$ express microservice

• Run micro-service locallyRaziels-Air:~ npm installRaziels-Air:~ npm start

/* GET greeting. */router.get('/sayhello', function(req, res) { res.send('Hello meetup members');});

micro-service

Page 10: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

Run inside a container• Get our local directory path

10

Raziels-Air:~ pwd

• Run a container with volume mounting and port mapping

• Copy micro-service to containerRaziels-Air:~ cp –r host /microserviceRaziels-Air:~ cd microservice

ubuntu

Node.js

micro-service

base image

Raziels-Air:~ RazielMac$ docker run –it –v HOSTFOLDER:CONTAINERFOLDER –p HOSTPORT:CONTAINERPORT IMAGENAME:TAG

Raziels-Air:~ npm start

Page 11: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

Create & run docker image• Create an image

11

Raziels-Air:~ docker commit CONTAINERID, IMAGENAME:TAG

• Run micro-service in the background

ubuntu

Node.js

micro-service

base image

Raziels-Air:~ RazielMac$ docker run –d –w /microservice –p 9000:3000 IMAGENAME npm start

micro-service image

Page 12: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

Push to Docker hub• Login

12

Raziels-Air:~ docker login

• Push out image

ubuntu

Node.js

micro-service

base image

Raziels-Air:~ RazielMac$ docker tag nodejs-microservice your_dockerhub_user/nodejs-microservice

micro-service image

Raziels-Air:~ RazielMac$ docker push your_dockerhub_user/nodejs-microservice

Page 13: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

What we did today• Create base Docker image• Build a simple micro-service• Run our micro-service inside a container• Create a Docker image from an existing

container• Publish our image in Docker hub

ubuntu

Node.jsbase image

micro-service

micro-service

micro-service image

Page 14: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

additional resources• Codefresh blog blog.codefresh.io• New name* Containers #101 http://www.meetup.com/Containers-101-online-meetup/• ContainerNode

http://www.meetup.com/ConatinerNode• Docker Online meetup (delivered by Docker) http://www.meetup.com/Docker-Online-Meetup/

@codefresh

Page 15: Containers #101 Meetup: Building a micro-service using Node.js and Docker - Part #1

Questions?

[email protected]

@RazielTabib

Sign up to our beta @ www.codefresh.io