Dockerize node.js application
-
Upload
seokjun-kim -
Category
Software
-
view
690 -
download
0
Transcript of Dockerize node.js application
![Page 1: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/1.jpg)
dockerize node.js applicationshipping node.js application with docker
김석준 @SOCAR
![Page 2: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/2.jpg)
YOU CAN DOCKERIZE YOUR APPLICATION TOMORROW
![Page 3: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/3.jpg)
WHY WHAT HOW
![Page 4: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/4.jpg)
WHY WHAT HOW
![Page 5: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/5.jpg)
WHY?
EASIER ENVIRONMENT SETUP
SINGLE-THREADED in MULTI-CORE
FAST AND EASY TO ROLLBACK
MICROSERVICE
VIRTUALIZATION
![Page 6: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/6.jpg)
EASIER ENVIRONMENT SETUP
Application Server
![Page 7: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/7.jpg)
EASIER ENVIRONMENT SETUPTRADITIONAL WAY
$curl-sLhttps://deb.nodesource.com/setup_6.x|sudo-Ebash-
$sudoapt-getupdate$sudoapt-getinstallnodejs
…
$echo“debhttp://nginx.org/packages/debian/squeezenginx”>>/etc/apt/sources.list$echo“deb-srchttp://nginx.org/packages/debian/squeezenginx”>>/etc/apt/sources.list
$sudoapt-getinstallnginx
…
$sudoapt-getinstallntpvimfail2ban
…
$vi/etc/nginx/site-enabled/node.conf$nginx-sreload
…
$mkdir/home/alma/app&&cd/home/alma/app
$gitpull…&&npminstall
$npmrunbuild
$npmrunserve
![Page 8: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/8.jpg)
EASIER ENVIRONMENT SETUP
Application
Servers
![Page 9: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/9.jpg)
EASIER ENVIRONMENT SETUP
$curl-sLhttps://deb.nodesource.com/setup_6.x|sudo-Ebash-
$sudoapt-getupdate$sudoapt-getinstallnodejs
…
$echo“debhttp://nginx.org/packages/debian/squeezenginx”>>/etc/apt/sources.list$echo“deb-srchttp://nginx.org/packages/debian/squeezenginx”>>/etc/apt/sources.list
$sudoapt-getinstallnginx
…
$sudoapt-getinstallntpvimfail2ban
…
$vi/etc/nginx/site-enabled/node.conf$nginx-sreload
…
$mkdir/home/alma/app&&cd/home/alma/app
$gitpull…&&npminstall
$npmrunbuild
$npmrunserveX3
TRADITIONAL WAY
![Page 10: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/10.jpg)
EASIER ENVIRONMENT SETUP
Application
Many Servers
![Page 11: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/11.jpg)
EASIER ENVIRONMENT SETUP
“이러려고 개발자 하려고 했나 자괴감 들고 괴로워”
TRADITIONAL WAY
“I really didn’t want to be a developer to do this”
![Page 12: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/12.jpg)
SINGLE-THREADED in MULTI-CORE
MULTICORESingle-threaded
in
![Page 13: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/13.jpg)
SINGLE-THREADED in MULTI-CORECLUSTER
varcluster=require('cluster');if(cluster.isMaster){varnumWorkers=require('os').cpus().length;console.log('Masterclustersettingup'+numWorkers+'workers...');for(vari=0;i<numWorkers;i++){cluster.fork();}cluster.on('online',function(worker){console.log('Worker'+worker.process.pid+'isonline');});cluster.on('exit',function(worker,code,signal){console.log('Worker'+worker.process.pid+'diedwithcode:'+code+',andsignal:'+signal);console.log('Startinganewworker');cluster.fork();});}else{varapp=require('express')();app.all('/*',function(req,res){res.send('process'+process.pid+'sayshello!').end();})varserver=app.listen(8000,function(){console.log('Process'+process.pid+'islisteningtoallincomingrequests');});}
@https://www.sitepoint.com/how-to-create-a-node-js-cluster-for-speeding-up-your-apps/
![Page 14: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/14.jpg)
SIMPLICITY
![Page 15: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/15.jpg)
SINGLE-THREADED in MULTI-CORECLUSTER
TOO COMPLICATED
![Page 16: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/16.jpg)
VIRTUALIZATION
STAGINGDEV
LIVEPHYSICAL
LIVEDB
![Page 17: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/17.jpg)
VIRTUALIZATION
STAGINGLOCAL LIVECLOUDDEV
LIVEPHYSICAL
LIVEDB
![Page 18: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/18.jpg)
VIRTUALIZATION
STAGINGLOCAL
LIVECLOUD
DEV
LIVEPHYSICAL
STAGINGDB
LIVEDB
REPLICADB
![Page 19: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/19.jpg)
VIRTUALIZATION
STAGINGLOCAL
LIVECLOUD
DEV
LIVEPHYSICAL
STAGINGDB
REPLICADB
LIVEDB
environment variables
environment variables
environment variables
![Page 20: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/20.jpg)
VIRTUALIZATION
STAGINGLOCAL
LIVECLOUD
DEV
LIVEPHYSICAL
STAGINGDB
REPLICADB
environment variables
LIVEDB #1
LIVEDB #2
LIVECLOUD
LIVECLOUD
CRONenvironment variables
environment variables
![Page 21: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/21.jpg)
VIRTUALIZATIONUNABLE TO TRACK ENVIRONMENTS
![Page 22: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/22.jpg)
MICROSERVICE
SOCARAPP API BACK
OFFICE API
ZEROCARAPP API BACK
OFFICE API
MAKE IT DETACHABLE
![Page 23: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/23.jpg)
MICROSERVICE
BACKOFFICE API API
BACKOFFICE API API
APICRON
MAKE IT DETACHABLE
![Page 24: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/24.jpg)
MICROSERVICEMAKE IT DETACHABLE
BACKOFFICE API API
BACKOFFICE API API
APICRON
![Page 25: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/25.jpg)
FAST AND EASY TO ROLLBACKDEVELOPMENT REQUIREMENT
WE NEED TO ROLLBACK
SERIOUSLY
![Page 26: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/26.jpg)
WHY WHAT HOW
![Page 27: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/27.jpg)
BEFORE WHAT
![Page 28: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/28.jpg)
![Page 29: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/29.jpg)
VM DOCKER
WHAT IS DOCKER?
@http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter01/01
![Page 30: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/30.jpg)
VM DOCKER
WHAT IS DOCKER?
@http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter01/01
![Page 31: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/31.jpg)
WHAT IS DOCKER?
![Page 32: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/32.jpg)
WHAT IS DOCKER?
LIGHT VIRTUAL MACHINE
VMs
SERVER
![Page 33: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/33.jpg)
IMAGE CONTAINER
WHAT IS DOCKER?MEANWHILE IN DOCKER WORLD
Windows 8 PCs
@CPU by Creative Stall from the Noun Project
![Page 34: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/34.jpg)
WHAT IS DOCKER?IMAGE
BASEUBUNTU, ALPINE, CENTOS …
DEPENDENCIESVIM, CURL, NODE.JS, PYTHON …
APPLICATIONSOURCE CODE, ENVIRONMENT …
START SCRIPTBASH, MAKEFILE, NPM START …
![Page 35: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/35.jpg)
WHAT IS DOCKER?CONTAINER
INFORMATIONNAME, PORT …
SETUPRESTART, DAEMON, LINK …
HOST RELATEDVOLUME, NETWORK …
PROCESSNODE …
![Page 36: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/36.jpg)
WHY WHAT HOW
![Page 37: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/37.jpg)
EASIER ENVIRONMENT SETUPUNABLE TO VERSION CONTROL
$curl-sLhttps://deb.nodesource.com/setup_6.x|sudo-Ebash-
$sudoapt-getupdate$sudoapt-getinstallnodejs
…
$echo“debhttp://nginx.org/packages/debian/squeezenginx”>>/etc/apt/sources.list$echo“deb-srchttp://nginx.org/packages/debian/squeezenginx”>>/etc/apt/sources.list
$sudoapt-getinstallnginx
…
$sudoapt-getinstallntpvimfail2ban
…
$vi/etc/nginx/site-enabled/node.conf$nginx-sreload
…
$mkdir/home/alma/app&&cd/home/alma/app
$gitpull…&&npminstall
$npmrunbuild
$npmrunserve
![Page 38: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/38.jpg)
EASIER ENVIRONMENT SETUPDOCKERIZED WAY
FROMnode:6
RUN\apt-getupdate--force-yes-y&&\mkdir-p/src
COPYpackage.json/src/package.json
RUN\apt-getupdate--force-yes-y&&\apt-getinstall--force-yes-yvim
RUN\cd/src;npminstall--production
COPY./src
RUN\cd/src;npmrunbuild
EXPOSE3000
ENVNODE_ENVproductionENVDBliveENVTZAsia/Seoul
WORKDIR/src
CMDnpmrunserve
Dockerfile
![Page 39: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/39.jpg)
EASIER ENVIRONMENT SETUPDOCKERIZED WAY
$dockerbuild-tnode-docker.
$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZEnode-dockerlatest08a5b1c92fcfAboutaminuteago654.5MB
![Page 40: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/40.jpg)
EASIER ENVIRONMENT SETUPOFFICIAL NODE Dockerfile
FROMbuildpack-deps:jessie
RUNgroupadd-rnode&&useradd-r-gnodenode
#gpgkeyslistedathttps://github.com/nodejs/nodeRUNset-ex\&&forkeyin\9554F04D7259F04124DE6B476D5A82AC7E37093B94AE36675C464D64BAFA68DD7434390BDBE9B9C5\0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93FD3A5288F042B6850C66B31F09FE44734EB7990E\71DCFD284A79C3B38668286BC97EC7A07EDE3FC1DD8F2338BAE7501E3DD5AC78C273792F7D83545D\B9AE9905FFD7803F25714661B63B535A4C206CA9C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8\;do\gpg--keyserverha.pool.sks-keyservers.net--recv-keys"$key";\done
ENVNPM_CONFIG_LOGLEVELinfoENVNODE_VERSION6.9.1
RUNcurl-SLO"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz"\&&curl-SLO"https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"\&&gpg--batch--decrypt--outputSHASUMS256.txtSHASUMS256.txt.asc\&&grep"node-v$NODE_VERSION-linux-x64.tar.xz\$"SHASUMS256.txt|sha256sum-c-\&&tar-xJf"node-v$NODE_VERSION-linux-x64.tar.xz"-C/usr/local--strip-components=1\&&rm"node-v$NODE_VERSION-linux-x64.tar.xz"SHASUMS256.txt.ascSHASUMS256.txt\&&ln-s/usr/local/bin/node/usr/local/bin/nodejs
CMD["node"]
Dockerfile
![Page 41: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/41.jpg)
EASIER ENVIRONMENT SETUPDOCKERIZED WAY
$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZEnode-dockerlatest08a5b1c92fcfAboutaminuteago654.5MB
$dockerrun--namedocker-instance-1--port80:3000node-docker
![Page 42: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/42.jpg)
SINGLE-THREADED in MULTI-COREEASY TO SCALE
$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZEnode-dockerlatest08a5b1c92fcfAboutaminuteago654.5MB
$dockerrun--namedocker-instance-1--port80:3000node-docker
$dockerrun--namedocker-instance-2--port81:3000node-docker
$dockerrun--namedocker-instance-3--port82:3000node-docker
.
.
.
![Page 43: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/43.jpg)
SINGLE-THREADED in MULTI-COREEASY TO SCALE
http{upstreamapplication{least_conn;serverlocalhost:80max_fails=3fail_timeout=60s;serverlocalhost:81max_fails=3fail_timeout=60s;serverlocalhost:82max_fails=3fail_timeout=60s;}
server{listen80;
location/{proxy_passhttp://application;proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection'upgrade';proxy_set_headerHost$host;proxy_cache_bypass$http_upgrade;}}}
nginx.conf
![Page 44: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/44.jpg)
MICROSERVICEDOCKER-COMPOSE
version:'2'
services:application:container_name:applicationimage:node-docker
docker-compose.yml
![Page 45: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/45.jpg)
MICROSERVICEDOCKER-COMPOSE
version:'2'
services:application:container_name:applicationimage:node-docker
redis:container_name:redisimage:redis
docker-compose.yml
![Page 46: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/46.jpg)
MICROSERVICEDOCKER-COMPOSE
version:'2'
services:application:container_name:applicationimage:node-docker
redis:container_name:redisimage:redis
nginx:container_name:nginximage:nginxports:-80:80-443:443
docker-compose.yml
![Page 47: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/47.jpg)
MICROSERVICEDOCKER-COMPOSE
version:'2'
services:application:container_name:applicationimage:node-docker
application-alt:container_name:applicationimage:node-docker
redis:container_name:redisimage:redis
nginx:container_name:nginximage:nginxports:-80:80-443:443
docker-compose.yml
![Page 48: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/48.jpg)
MICROSERVICEDOCKER-COMPOSE
version:'2'
services:application:container_name:applicationimage:node-docker
application-alt:container_name:applicationimage:node-docker
redis:container_name:redisimage:redis
nginx:container_name:nginxbuild:./nginxrestart:alwayslinks:-application-1:application-application-2:application-altports:-80:80-443:443depends_on:-application-application-alt
docker-compose.yml
![Page 49: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/49.jpg)
FAST AND EASY TO ROLLBACKBUILD WITH TAG
$dockerbuild-tnode-docker.
$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZEnode-dockerlatest08a5b1c92fcfAboutanhourago654.5M
$dockerbuild-tnode-docker:1982.
$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZEnode-dockerlatest08a5b1c92fcfAboutanhourago654.5MBnode-docker198210394kdfksf1Aboutaminuteago654.5MB
![Page 50: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/50.jpg)
FAST AND EASY TO ROLLBACKBUILD WITH TAG
$dockerbuild-tnode-docker.
$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZEnode-dockerlatest08a5b1c92fcfAboutanhourago654.5M
$dockerbuild-tnode-docker:1982.
$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZEnode-dockerlatest08a5b1c92fcfAboutanhourago654.5MBnode-docker198210394kdfksf1Aboutaminuteago654.5MB
![Page 51: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/51.jpg)
FAST AND EASY TO ROLLBACK
![Page 52: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/52.jpg)
FAST AND EASY TO ROLLBACKDOCKER HUB
https://hub.docker.com/r/library/node/tags/
![Page 53: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/53.jpg)
WHY WHAT HOW
![Page 54: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/54.jpg)
YOU CAN DOCKERIZE YOUR APPLICATION TOMORROW
![Page 55: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/55.jpg)
$npminit-f
$npmi-Sexpressuuid
DOCKERIZESTART WITH EXPRESS
![Page 56: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/56.jpg)
DOCKERIZESTART WITH EXPRESS
varexpress=require('express');varuuid=require('uuid');
varapp=express();varid=uuid.v4();varport=3000;
app.get('/',function(req,res){res.send(id)});
app.listen(port,function(){console.log('Exampleapplisteningonport:'+port);});
index.js
![Page 57: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/57.jpg)
DOCKERIZEBUILD DOCKER IMAGE
node_modules/
.dockerignore
![Page 58: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/58.jpg)
DOCKERIZE
FROMnode:6
COPYpackage.json/src/package.json
RUNcd/src;npminstall
COPY./src
EXPOSE3000
WORKDIR/src
CMDnodeindex.js
Dockerfile
BUILD DOCKER IMAGE
![Page 59: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/59.jpg)
$dockerbuild--tagnode-nginx:test.
SendingbuildcontexttoDockerdaemon7.168kBStep1:FROMnode:66:Pullingfromlibrary/node357ea8c3d80b:Alreadyexists52befadefd24:Alreadyexists3c0732d5313c:Pullcompleteceb711c7e301:Pullcomplete868b1d0e2aad:Pullcomplete61d10f626f84:PullcompleteDigest:sha256:12899eea666e85f23e9850bd3c309b1ee28dd0869f554a7a6895fc962d9094a3Status:Downloadednewerimagefornode:6--->800da22d0e7bStep2:COPYpackage.json/src/package.json--->7f3344975b1eRemovingintermediatecontainerae1d0482e982Step3:RUNcd/src;npminstall--production--->Runningin222a0585301b
...
Successfullybuilt08a5b1c92fcf
BUILD DOCKER IMAGEDOCKERIZE
![Page 60: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/60.jpg)
$dockerrun--namenode-nginx-instance-p3000:3000node-nginx:test
Exampleapplisteningonport:3000
$dockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES30179995521cnode-nginx:test"/bin/sh-c'nodeind"AboutaminuteagoUpAboutaminute0.0.0.0:3000->3000/tcpnode-nginx-instance
BUILD DOCKER IMAGEDOCKERIZE
![Page 61: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/61.jpg)
![Page 62: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/62.jpg)
$dockerrun-d--namenode-nginx-instance-0-p3000:3000node-nginx:test
$dockerrun-d--namenode-nginx-instance-1-p3001:3000node-nginx:test
$dockerrun-d--namenode-nginx-instance-2-p3002:3000node-nginx:test
RUN 3 DOCKER CONTAINERDOCKERIZE
![Page 63: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/63.jpg)
worker_processes1;
events{worker_connections1024;}
http{upstreamnode-app{least_conn;serverlocalhost:3000;serverlocalhost:3001;serverlocalhost:3002;}
server{listen80;
location/{proxy_passhttp://node-app;proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection'upgrade';proxy_set_headerHost$host;proxy_cache_bypass$http_upgrade;}}}
LOAD-BALANCING WITH NGINX
nginx/nginx.conf
DOCKERIZE
![Page 64: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/64.jpg)
FROMnginx
COPYnginx.conf/etc/nginx/nginx.conf
LOAD-BALANCING WITH NGINX
nginx/Dockerfile
DOCKERIZE
![Page 65: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/65.jpg)
$dockerbuild--tagnode-nginx-lb:test.
$dockerrun-d--namenode-nginx-instance-lb-p4000:80node-nginx-lb:test
LOAD-BALANCING WITH NGINXDOCKERIZE
![Page 66: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/66.jpg)
DOCKERIZE
NOOOOOOOOT WORKING
WHAT THE…
![Page 67: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/67.jpg)
DOCKERIZEI RUINED PLAYNODE
![Page 68: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/68.jpg)
$dockerrm-f$(dockerps-a-q)
LINK CONTAINERSDOCKERIZE
![Page 69: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/69.jpg)
version:'2'
services:nginx:container_name:node-nginx-lbbuild:./nginxlinks:-app-1:app-1-app-2:app-2-app-3:app-3ports:-3000:80depends_on:-app-1-app-2-app-3
app-1:container_name:node-nginx-1image:node-nginx:testports:-3000
app-2:container_name:node-nginx-2image:node-nginx:testports:-3000
LINK CONTAINERSDOCKERIZE
app-3:container_name:node-nginx-3image:node-nginx:testports:-3000
docker-compose.yml
![Page 70: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/70.jpg)
...
upstreamnode-app{least_conn;serverapp-1:3000max_fails=3fail_timeout=30s;serverapp-2:3000max_fails=3fail_timeout=30s;serverapp-3:3000max_fails=3fail_timeout=30s;}
...
LINK CONTAINERSDOCKERIZE
nginx/nginx.conf
![Page 71: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/71.jpg)
$cd..
$docker-composeup
Recreatingnode-nginx-3Recreatingnode-nginx-1Recreatingnode-nginx-2Recreatingnode-nginx-lbAttachingtonode-nginx-1,node-nginx-2,node-nginx-3,node-nginx-lbnode-nginx-1|Exampleapplisteningonport:3000node-nginx-2|Exampleapplisteningonport:3000node-nginx-3|Exampleapplisteningonport:3000node-nginx-lb|172.19.0.1--[22/Aug/2016:16:07:32+0000]"GET/HTTP/1.1"20036"-""Mozilla/5.0(Macintosh;IntelMacOSX10_12)AppleWebKit/602.1.50(KHTML,likeGecko)Version/10.0Safari/602.1.50"node-nginx-lb|172.19.0.1--[22/Aug/2016:16:07:32+0000]"GET/HTTP/1.1"20036"-""Mozilla/5.0(Macintosh;IntelMacOSX10_12)AppleWebKit/602.1.50(KHTML,likeGecko)Version/10.0Safari/602.1.50"node-nginx-lb|172.19.0.1--[22/Aug/2016:16:07:33+0000]"GET/HTTP/1.1"20036"-""Mozilla/5.0(Macintosh;IntelMacOSX10_12)AppleWebKit/602.1.50(KHTML,likeGecko)Version/10.0Safari/602.1.50"node-nginx-lb|172.19.0.1--[22/Aug/2016:16:07:33+0000]"GET/HTTP/1.1"20036"-""Mozilla/5.0(Macintosh;IntelMacOSX10_12)AppleWebKit/602.1.50(KHTML,likeGecko)Version/10.0Safari/602.1.50"
LINK CONTAINERSDOCKERIZE
![Page 72: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/72.jpg)
DOCKERIZE
![Page 73: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/73.jpg)
AND THEN…
![Page 74: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/74.jpg)
![Page 75: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/75.jpg)
CLUSTERINGCONTAINER ORCHESTRATION
SWARM KUBERNATES
![Page 76: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/76.jpg)
CLUSTERINGDOCKER SWARM
![Page 77: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/77.jpg)
MONITORINGDOCKER STATS
$dockerstatsdetermined_shockleydetermined_wozniakprickly_hypatia
CONTAINERCPU%MEMUSAGE/LIMITMEM%NETI/Odetermined_shockley0.00%884KiB/1.961GiB0.04%648B/648Bdetermined_wozniak0.00%1.723MiB/1.961GiB0.09%1.266KiB/648Bprickly_hypatia0.00%740KiB/1.961GiB0.04%1.898KiB/648B
![Page 78: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/78.jpg)
MONITORINGKITEMATIC FOR MAC (BETA)
![Page 79: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/79.jpg)
MONITORINGDATADOG
![Page 80: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/80.jpg)
CLOUDDOCKER CLOUD
![Page 81: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/81.jpg)
CLOUDAWS ECS
![Page 82: Dockerize node.js application](https://reader031.fdocument.pub/reader031/viewer/2022030316/587796061a28ab0f778b5f37/html5/thumbnails/82.jpg)
– from Twitter
“Dockerize all the things!”