SlideShare uma empresa Scribd logo
1 de 21
AplicaçõesEscalonáveis
Node Js + Docker
VMvsDocker
Docker
● O que é o Docker ?
“Software containerization platform”
● Compartilha o mesmo kernel
“Lightweight”
● Utiliza UnionFS
“Images are constructed from layered filesystems”
Docker
Docker
● Images
“Template de leitura” - Exemplo Apache com sua aplicação
● Containers
Containers é o que é criado a partir das images Um
diretório
● Registries
Contém imagens publicas e privadas, onde é possível
realizar ações como pull, push
Docker
Executando um container
$ docker run -it ubuntu /bin/bash
DEmonstração!
Docker
● O que acontece quando executamos um container ?
1. Caso não encontre a imagem, faz pull no dockerhub
2. Cria o container
3. Cria interface de rede para comunicação com o host
4. Cria um ip
5. Executa o processo que você especificou
6. Captura o output da aplicação
DockerHub
● Plataforma para distribuir e compartilhar imagens
● Imagens oficiais
● Ambientes “versionados”
● Automatização de Builds
● WebHooks
Estruturadaaplicação
ComoéFeitoHoje
● NodeJs roda em uma thread
● Modulo Cluster
“A single instance of Node.js runs in a single thread. To
take advantage of multi-core systems the user will
sometimes want to launch a cluster of Node.js processes to
handle the load.”
https://nodejs.org/api/cluster.html
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello worldn');
}).listen(8000);
}
ComoéFeitoHoje
● PM2 (Process Manager)
O PM2 faz toda a lógica utilizada no cluster, para que não
seja necessário fazer isso na aplicação.
Comovamosfazer?
DockerHub
● jwilder/docker-gen
docker-gen is a file generator that renders templates
using docker container meta-data.
Pode ser utilizar para:
● Centralizar logs
● Configuração de Proxy Reverso
DockerHub
● jwilder/nginx-proxy
nginx-proxy sets up a container running nginx and docker-
gen. docker-gen generates reverse proxy configs for nginx
and reloads nginx when containers are started and stopped.
● Permite a configuração dinâmica
docker-gen -only-exposed -watch -notify "/etc/init.d/nginx reload"
templates/nginx.tmpl /etc/nginx/sites-enabled/default
DEmonstração!
Docker
● Vantágens
Ambientes replicáveis
Ambiente como parte do software
Infrastructure as Code!
Open Source
Elimina inconsistência de ambientes
Obrigado=)
@btfidelis004
@btfidelis004
Utilizando Docker para escalonar aplicações Node.Js

Mais conteúdo relacionado

Mais procurados

TDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataTDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataBruno Pedroso
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerWellington Silva
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...tdc-globalcode
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engineHudson Brendon
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldThiago Soares
 
Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)Wellington Silva
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoSérgio Lima
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?tdc-globalcode
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerRafael Dutra
 
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com DockerAécio Pires
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)Wellington Silva
 

Mais procurados (20)

Estudo de caso - Uso Docker no Desenvolvimento
Estudo de caso - Uso Docker no DesenvolvimentoEstudo de caso - Uso Docker no Desenvolvimento
Estudo de caso - Uso Docker no Desenvolvimento
 
TDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataTDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prata
 
Conceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java NoroesteConceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java Noroeste
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
 
Docker Itix
Docker ItixDocker Itix
Docker Itix
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorld
 
Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)
 

Destaque

Bring N-Tier Apps to containers 2015 ContainerCon
Bring N-Tier Apps to containers  2015 ContainerConBring N-Tier Apps to containers  2015 ContainerCon
Bring N-Tier Apps to containers 2015 ContainerConChris Haddad
 
#DevOps in a windows world - @DevOpsGuys
#DevOps in a windows world - @DevOpsGuys#DevOps in a windows world - @DevOpsGuys
#DevOps in a windows world - @DevOpsGuysDevOpsGroup
 
Delivering DevOps Automation on Windows
Delivering DevOps Automation on WindowsDelivering DevOps Automation on Windows
Delivering DevOps Automation on WindowsDevOpsGroup
 
Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLLeonardo Cezar
 
Oito dicas sobre Docker
Oito dicas sobre DockerOito dicas sobre Docker
Oito dicas sobre DockerMundo Docker
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...adri1s
 
Modelo de Simulación de una mina a tajo abierto
Modelo de Simulación de una mina a tajo abiertoModelo de Simulación de una mina a tajo abierto
Modelo de Simulación de una mina a tajo abiertoJohanna Gomez Quevedo
 
Debugging (Docker) containers in production
Debugging (Docker) containers in productionDebugging (Docker) containers in production
Debugging (Docker) containers in productionbcantrill
 
AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...
AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...
AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...Amazon Web Services
 
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpecTest-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpecMartin Etmajer
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Silicon Comté
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalitéZenika
 

Destaque (15)

Bring N-Tier Apps to containers 2015 ContainerCon
Bring N-Tier Apps to containers  2015 ContainerConBring N-Tier Apps to containers  2015 ContainerCon
Bring N-Tier Apps to containers 2015 ContainerCon
 
#DevOps in a windows world - @DevOpsGuys
#DevOps in a windows world - @DevOpsGuys#DevOps in a windows world - @DevOpsGuys
#DevOps in a windows world - @DevOpsGuys
 
Delivering DevOps Automation on Windows
Delivering DevOps Automation on WindowsDelivering DevOps Automation on Windows
Delivering DevOps Automation on Windows
 
Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQL
 
Oito dicas sobre Docker
Oito dicas sobre DockerOito dicas sobre Docker
Oito dicas sobre Docker
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Modelo de Simulación de una mina a tajo abierto
Modelo de Simulación de una mina a tajo abiertoModelo de Simulación de una mina a tajo abierto
Modelo de Simulación de una mina a tajo abierto
 
Debugging (Docker) containers in production
Debugging (Docker) containers in productionDebugging (Docker) containers in production
Debugging (Docker) containers in production
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...
AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...
AWS re:Invent 2016: Operations Automation and Infrastructure Management with ...
 
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpecTest-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 

Semelhante a Utilizando Docker para escalonar aplicações Node.Js

Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerAécio Pires
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJSAlex Camargo
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Wallison Marra
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Padrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhoresPadrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhoresCarlos Andre Fernandes
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesRodrigo Cândido da Silva
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 

Semelhante a Utilizando Docker para escalonar aplicações Node.Js (20)

Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Docker
DockerDocker
Docker
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Padrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhoresPadrōes, Especificações, Runtimes: construindo containers melhores
Padrōes, Especificações, Runtimes: construindo containers melhores
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 
Docker
DockerDocker
Docker
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 

Mais de KingHost - Hospedagem de sites

Mais de KingHost - Hospedagem de sites (11)

KingCode: o Culture Code da KingHost
KingCode: o Culture Code da KingHostKingCode: o Culture Code da KingHost
KingCode: o Culture Code da KingHost
 
Painel: Batalha de Programador
Painel: Batalha de ProgramadorPainel: Batalha de Programador
Painel: Batalha de Programador
 
Web Components e o desenvolvimento de aplicações web modernas
Web Components e o desenvolvimento de aplicações web modernasWeb Components e o desenvolvimento de aplicações web modernas
Web Components e o desenvolvimento de aplicações web modernas
 
Front vs Back: Tornando o mundo Web mais fácil
Front vs Back: Tornando o mundo Web mais fácil Front vs Back: Tornando o mundo Web mais fácil
Front vs Back: Tornando o mundo Web mais fácil
 
Programação na Indústria de Jogos
Programação na Indústria de JogosProgramação na Indústria de Jogos
Programação na Indústria de Jogos
 
[Webinar] Utilizando o Design Thinking para Melhorar seus Projetos Online
[Webinar] Utilizando o Design Thinking para Melhorar seus Projetos Online[Webinar] Utilizando o Design Thinking para Melhorar seus Projetos Online
[Webinar] Utilizando o Design Thinking para Melhorar seus Projetos Online
 
[Webinar] Refatoração em PHP
[Webinar] Refatoração em PHP[Webinar] Refatoração em PHP
[Webinar] Refatoração em PHP
 
[E-book] Como criar e manter um site ou blog com o Wordpress
[E-book] Como criar e manter um site ou blog com o Wordpress[E-book] Como criar e manter um site ou blog com o Wordpress
[E-book] Como criar e manter um site ou blog com o Wordpress
 
[E-book] Como minha empresa pode explorar as redes sociais
[E-book] Como minha empresa pode explorar as redes sociais[E-book] Como minha empresa pode explorar as redes sociais
[E-book] Como minha empresa pode explorar as redes sociais
 
[Whitepaper] SSL Kinghost
[Whitepaper] SSL Kinghost[Whitepaper] SSL Kinghost
[Whitepaper] SSL Kinghost
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL
 

Utilizando Docker para escalonar aplicações Node.Js

  • 1.
  • 4. Docker ● O que é o Docker ? “Software containerization platform” ● Compartilha o mesmo kernel “Lightweight” ● Utiliza UnionFS “Images are constructed from layered filesystems”
  • 6. Docker ● Images “Template de leitura” - Exemplo Apache com sua aplicação ● Containers Containers é o que é criado a partir das images Um diretório ● Registries Contém imagens publicas e privadas, onde é possível realizar ações como pull, push
  • 7. Docker Executando um container $ docker run -it ubuntu /bin/bash
  • 9. Docker ● O que acontece quando executamos um container ? 1. Caso não encontre a imagem, faz pull no dockerhub 2. Cria o container 3. Cria interface de rede para comunicação com o host 4. Cria um ip 5. Executa o processo que você especificou 6. Captura o output da aplicação
  • 10. DockerHub ● Plataforma para distribuir e compartilhar imagens ● Imagens oficiais ● Ambientes “versionados” ● Automatização de Builds ● WebHooks
  • 12. ComoéFeitoHoje ● NodeJs roda em uma thread ● Modulo Cluster “A single instance of Node.js runs in a single thread. To take advantage of multi-core systems the user will sometimes want to launch a cluster of Node.js processes to handle the load.” https://nodejs.org/api/cluster.html
  • 13. const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); }); } else { // Workers can share any TCP connection // In this case it is an HTTP server http.createServer((req, res) => { res.writeHead(200); res.end('hello worldn'); }).listen(8000); }
  • 14. ComoéFeitoHoje ● PM2 (Process Manager) O PM2 faz toda a lógica utilizada no cluster, para que não seja necessário fazer isso na aplicação.
  • 16. DockerHub ● jwilder/docker-gen docker-gen is a file generator that renders templates using docker container meta-data. Pode ser utilizar para: ● Centralizar logs ● Configuração de Proxy Reverso
  • 17. DockerHub ● jwilder/nginx-proxy nginx-proxy sets up a container running nginx and docker- gen. docker-gen generates reverse proxy configs for nginx and reloads nginx when containers are started and stopped. ● Permite a configuração dinâmica docker-gen -only-exposed -watch -notify "/etc/init.d/nginx reload" templates/nginx.tmpl /etc/nginx/sites-enabled/default
  • 19. Docker ● Vantágens Ambientes replicáveis Ambiente como parte do software Infrastructure as Code! Open Source Elimina inconsistência de ambientes