Orchestrando na “linha”
 16º Meetup – PHP Pernambuco
Matheus Melo
O que significa Docker?
"a person who works at a port, putting goods onto and taking
them off ships"
O que ele faz e qual seu propósito?
 Ele provê um jeito ”fácil” de rodar, levantar e ”entregar” sua aplicação
 Entregar esse valor em plataformas Windows Server, Linux e Mac.
 Reduzir os problemas causados por diferenças de ambiente (Produção Vs.
Desenvolvimento)
”…mas na minha máquina funciona!”
 Pode isso, Bial?
 Seria esse o principal motivo?
Vantagens Generalizadas
 Elimina a assertiva ”Funciona na minha máquina”
 Facilita o gerenciamento/monitoramento de recursos
 Ambientes isolados | Recursos limitados
 Ajuda a construir um pipeline ágil de entrega contínua
 Não requer o uso de VM’s
 (mas não significa que você não possa/deva usar)
Desvantagens gerais
 Segurança pode ser severamente comprometida
 Multiplos containers podem sofrer impactos relacionados a mudanças no
sistemas geral.
Alternativas
 Vagrant | Otto
 Kubernetes
 Apache Mesos
 RKT
 Stakkr
 Dentre outros…
Como de fato ele funciona?
 Ele trabalha com um sistema de ”contentorização” que encapsula o ambiente
inteiro de sua aplicação
Requisitos
 Variam de acordo com o sistema e a versão de Docker que deseja utilizar
 Windows
 Docker for Windows (Server ou Windows pro)
 Hyper-v
 Docker Toolbox
 VTx (Virtualization Technology)
 Mac
 Docker for Mac (> 2010 model) MMU e EPT
 Docker Toolbox
 Linux
Os dois cenários do Docker
 Desenvolvimento
 Entrega/Deploy
Cenário 1 - Desenvolvimento
 Por que usar o Docker para desenvolver?
 Como usar o Docker para desenvolver?
 Possíveis problemas?
 Exemplos
Cenário 2 – Produção/Deploy
 Por que usar o Docker para deploy?
 Como usar o Docker para realizar suas entregas (deploys)?
 Possíveis problemas?
 Exemplos
Como começar?
 Faça um mapeamento da sua aplicação
 Faça um mapeamento do seu ambiente de produção
 Procure ou construa um Dockerfile que replique seu ambiente de produção
 Amadureça seu container
 Escolha um método de deploy e o configure
 Vá para a praia e tome uma cerveja
DockerHub
 O que é?
 Como usar?
 Exemplos
Vamos ver na prática agora
 Provisionaremos um Droplet na Digital Ocean usando Docker-machine
 Instalaremos o Docker Compose
 Configuraremos nossa chave para usar o GIT
 Baixaremos todos os repositórios criados para essa palestra
 Rodaremos o docker-compose up em cada um deles.
 Alguns projetos precisarão ter seus arquivos .env duplicados do .env.example
padrão (laravel e voyager são exemplos).
github.com/16meetupphp
 Todos os projetos já foram configurados e esquematizados para rodarmos no
Docker
 Vamos aos poucos aumentando a complexidade da infra – e fazendo os
sistemas se comunicar entre si
NGINX PHP MySQl
Laravel
1) Um stack com 3 containers
NGINX PHP MySQl
Laravel
NGINX PHP
Voyager
2) Dois stacks com compartilhamento do container
de banco
NGINX PHP MySQl
Laravel
NGINX PHP
Voyager
Proxy
3) Adicionamos outro container para atuar como
proxy reverso – direcionando as requisições pros
containers desejados
NGINX PHP MySQl
Laravel
NGINX PHP
Voyager
Proxy
PHP
Slim
4) Adicionamos mais outro stack de uma aplicação
utilizando apenas o servidor web do próprio PHP
NGINX PHP MySQl
Laravel
NGINX PHP
Voyager
Proxy
PHP
Slim
Apache PHP Postgres
CakePHP
5) Adicionamos outro stack – com servidor web
diferente (Apache) e também com Postgres ao invés
de Mysql
NGINX PHP MySQl
Laravel
NGINX PHP
Voyager
Proxy
PHP
Slim
Apache PHP Postgres
CakePHP
SSL Certificates
6)Adicionamos um outro container para cuidar da
geração dos certificados ssl e renovações pra todos
os stacks rodando abaixo do proxy
NGINX PHP MySQl
Laravel
NGINX PHP
Voyager
Proxy
PHP
Slim
Apache PHP Postgres
CakePHP
SSL Certificates
Portainer
7) Finalizamos adicionando um outro
container/stack pra monitorar toda a
infra/containers criados no servidor
Dúvidas?
Contato
 Matheus Melo
 Facebook: /matheuscmpm
 Linkedin: /matheuscmpm
 E-mail: matheuscmpm@gmail.com, matheus.melo@idealizza.com.br
 Telefone/Whatsapp: (81) 98185-8411

Orchestrando na linha

  • 1.
    Orchestrando na “linha” 16º Meetup – PHP Pernambuco Matheus Melo
  • 2.
    O que significaDocker? "a person who works at a port, putting goods onto and taking them off ships"
  • 3.
    O que elefaz e qual seu propósito?  Ele provê um jeito ”fácil” de rodar, levantar e ”entregar” sua aplicação  Entregar esse valor em plataformas Windows Server, Linux e Mac.  Reduzir os problemas causados por diferenças de ambiente (Produção Vs. Desenvolvimento)
  • 4.
    ”…mas na minhamáquina funciona!”  Pode isso, Bial?  Seria esse o principal motivo?
  • 5.
    Vantagens Generalizadas  Eliminaa assertiva ”Funciona na minha máquina”  Facilita o gerenciamento/monitoramento de recursos  Ambientes isolados | Recursos limitados  Ajuda a construir um pipeline ágil de entrega contínua  Não requer o uso de VM’s  (mas não significa que você não possa/deva usar)
  • 6.
    Desvantagens gerais  Segurançapode ser severamente comprometida  Multiplos containers podem sofrer impactos relacionados a mudanças no sistemas geral.
  • 7.
    Alternativas  Vagrant |Otto  Kubernetes  Apache Mesos  RKT  Stakkr  Dentre outros…
  • 8.
    Como de fatoele funciona?  Ele trabalha com um sistema de ”contentorização” que encapsula o ambiente inteiro de sua aplicação
  • 9.
    Requisitos  Variam deacordo com o sistema e a versão de Docker que deseja utilizar  Windows  Docker for Windows (Server ou Windows pro)  Hyper-v  Docker Toolbox  VTx (Virtualization Technology)  Mac  Docker for Mac (> 2010 model) MMU e EPT  Docker Toolbox  Linux
  • 10.
    Os dois cenáriosdo Docker  Desenvolvimento  Entrega/Deploy
  • 11.
    Cenário 1 -Desenvolvimento  Por que usar o Docker para desenvolver?  Como usar o Docker para desenvolver?  Possíveis problemas?  Exemplos
  • 12.
    Cenário 2 –Produção/Deploy  Por que usar o Docker para deploy?  Como usar o Docker para realizar suas entregas (deploys)?  Possíveis problemas?  Exemplos
  • 13.
    Como começar?  Façaum mapeamento da sua aplicação  Faça um mapeamento do seu ambiente de produção  Procure ou construa um Dockerfile que replique seu ambiente de produção  Amadureça seu container  Escolha um método de deploy e o configure  Vá para a praia e tome uma cerveja
  • 14.
    DockerHub  O queé?  Como usar?  Exemplos
  • 15.
    Vamos ver naprática agora  Provisionaremos um Droplet na Digital Ocean usando Docker-machine  Instalaremos o Docker Compose  Configuraremos nossa chave para usar o GIT  Baixaremos todos os repositórios criados para essa palestra  Rodaremos o docker-compose up em cada um deles.  Alguns projetos precisarão ter seus arquivos .env duplicados do .env.example padrão (laravel e voyager são exemplos).
  • 16.
    github.com/16meetupphp  Todos osprojetos já foram configurados e esquematizados para rodarmos no Docker  Vamos aos poucos aumentando a complexidade da infra – e fazendo os sistemas se comunicar entre si
  • 17.
    NGINX PHP MySQl Laravel 1)Um stack com 3 containers
  • 18.
    NGINX PHP MySQl Laravel NGINXPHP Voyager 2) Dois stacks com compartilhamento do container de banco
  • 19.
    NGINX PHP MySQl Laravel NGINXPHP Voyager Proxy 3) Adicionamos outro container para atuar como proxy reverso – direcionando as requisições pros containers desejados
  • 20.
    NGINX PHP MySQl Laravel NGINXPHP Voyager Proxy PHP Slim 4) Adicionamos mais outro stack de uma aplicação utilizando apenas o servidor web do próprio PHP
  • 21.
    NGINX PHP MySQl Laravel NGINXPHP Voyager Proxy PHP Slim Apache PHP Postgres CakePHP 5) Adicionamos outro stack – com servidor web diferente (Apache) e também com Postgres ao invés de Mysql
  • 22.
    NGINX PHP MySQl Laravel NGINXPHP Voyager Proxy PHP Slim Apache PHP Postgres CakePHP SSL Certificates 6)Adicionamos um outro container para cuidar da geração dos certificados ssl e renovações pra todos os stacks rodando abaixo do proxy
  • 23.
    NGINX PHP MySQl Laravel NGINXPHP Voyager Proxy PHP Slim Apache PHP Postgres CakePHP SSL Certificates Portainer 7) Finalizamos adicionando um outro container/stack pra monitorar toda a infra/containers criados no servidor
  • 24.
  • 25.
    Contato  Matheus Melo Facebook: /matheuscmpm  Linkedin: /matheuscmpm  E-mail: matheuscmpm@gmail.com, matheus.melo@idealizza.com.br  Telefone/Whatsapp: (81) 98185-8411