O documento discute o Docker, um software usado para criar e executar aplicações isoladas chamadas contêineres. Ele explica que o Docker permite entregar aplicações de forma consistente através de plataformas diferentes e discute suas vantagens como reduzir problemas de ambientes e facilitar implantações contínuas. Também aborda como o Docker funciona usando contêineres e requisitos técnicos, e exemplifica seu uso em desenvolvimento e produção.
2. O que significa Docker?
"a person who works at a port, putting goods onto and taking
them off ships"
3. 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)
4. ”…mas na minha máquina funciona!”
Pode isso, Bial?
Seria esse o principal motivo?
5. 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)
6. Desvantagens gerais
Segurança pode ser severamente comprometida
Multiplos containers podem sofrer impactos relacionados a mudanças no
sistemas geral.
8. Como de fato ele funciona?
Ele trabalha com um sistema de ”contentorização” que encapsula o ambiente
inteiro de sua aplicação
9. 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
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ç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
15. 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).
16. 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
19. NGINX PHP MySQl
Laravel
NGINX PHP
Voyager
Proxy
3) Adicionamos outro container para atuar como
proxy reverso – direcionando as requisições pros
containers desejados
20. 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
21. 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
22. 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
23. 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