Pro Yearly is on sale from $80 to $50! »

Aplicações 12 fatores, melhor com Docker

Aplicações 12 fatores, melhor com Docker

Palestra sobre os 12 fatores e a aderência do Docker ministrada no TDC (The Developers Conference) em São Paulo em 8/7/2016.

280fecb4f048de5ecf36bec281609ea4?s=128

Wellington F. Silva

July 08, 2016
Tweet

Transcript

  1. Globalcode – Open4education Aplicações 12 fatores Melhor com Docker Wellington

    F. Silva
  2. Globalcode – Open4education Wellington F. Silva a.k.a.: wsilva/tom/boina técnico em

    telecom, programador, devops, instrutor, escritor, pai Atualmente na GFG
  3. Globalcode – Open4education Agenda O que é Docker? O que

    é 12 factor app? Os 12 fatores Como o Docker adere a cada fator
  4. Globalcode – Open4education O que é Docker?

  5. Globalcode – Open4education O que é Docker?

  6. Globalcode – Open4education O que é Docker? Sistema de contêineres

    Linux
  7. Globalcode – Open4education O que é Docker? Sistema de contêineres

    Linux Muito leve e rápido
  8. Globalcode – Open4education O que é Docker? Sistema de contêineres

    Linux Muito leve e rápido Muitas vantagens em 
 relação à virtualização
 tradicional
  9. Globalcode – Open4education O que é Docker? Sistema de contêineres

    Linux Muito leve e rápido Muitas vantagens em 
 relação à virtualização
 tradicional OSS
  10. Globalcode – Open4education O que é Docker? Sistema de contêineres

    Linux Muito leve e rápido Muitas vantagens em 
 relação à virtualização
 tradicional OSS Diversas ferramentas de 
 orquestração
  11. Globalcode – Open4education O que é Docker? Sistema de contêineres

    Linux Muito leve e rápido Muitas vantagens em 
 relação à virtualização
 tradicional OSS Diversas ferramentas de 
 orquestração Virtualização em nível de SO
  12. Globalcode – Open4education O que é Docker?

  13. Globalcode – Open4education Cupom de Desconto TDC25 25% de desconto

    no site da Novatec* sem desculpas pra não aprender Docker *para qualquer título O que é Docker?
  14. Globalcode – Open4education O que é 12 factor app?

  15. Globalcode – Open4education O que é 12 factor app? Metodologia

    para desenvolvimento de 
 webapps e SAAS
  16. Globalcode – Open4education O que é 12 factor app? Metodologia

    para desenvolvimento de 
 webapps e SAAS Aplicável em qualquer linguagem de programação de alto nível
  17. Globalcode – Open4education O que é 12 factor app? Metodologia

    para desenvolvimento de 
 webapps e SAAS Aplicável em qualquer linguagem de programação de alto nível Facilita portabilidade e escalabilidade
  18. Globalcode – Open4education O que é 12 factor app? Metodologia

    para desenvolvimento de 
 webapps e SAAS Aplicável em qualquer linguagem de programação de alto nível Facilita portabilidade e escalabilidade Criado por Adam Wiggins e outros 
 colaboradores do Heroku
  19. Globalcode – Open4education O que é 12 factor app? Metodologia

    para desenvolvimento de 
 webapps e SAAS Aplicável em qualquer linguagem de programação de alto nível Facilita portabilidade e escalabilidade Criado por Adam Wiggins e outros 
 colaboradores do Heroku Foca em portabilidade e escalabilidade
  20. Globalcode – Open4education O que é 12 factor app? Inspirado

    no "Patterns of Enterprise 
 Application Architecture" e no 
 "Refactoring" de Martin Fowler
  21. Globalcode – Open4education O que é 12 factor app? http://12factor.net

  22. Globalcode – Open4education "Quando o relógio bate a uma, todas

    as caveiras saem das tumbas." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  23. Globalcode – Open4education I - Base de Código Tudo tem

    que estar no SCM (Source Control Management)
  24. Globalcode – Open4education I - Base de Código

  25. Globalcode – Open4education I - Base de Código Tudo tem

    que estar no SCM (Source Control Management) Repositório único por app (git, hg, svn, bazaar)
  26. Globalcode – Open4education I - Base de Código Tudo tem

    que estar no SCM (Source Control Management) Repositório único por app (git, hg, svn, bazaar) + de um codebase é um sistema distribuído
  27. Globalcode – Open4education I - Base de Código Tudo tem

    que estar no SCM (Source Control Management) Repositório único por app (git, hg, svn, bazaar) + de um codebase é um sistema distribuído Mais apps num mesmo codebase é errado
  28. Globalcode – Open4education I - Base de Código Tudo tem

    que estar no SCM (Source Control Management) Repositório único por app (git, hg, svn, bazaar) + de um codebase é um sistema distribuído Mais apps num mesmo codebase é errado Vários deploys (dev1, dev2, dev3, staging, qa, integration, production)
  29. Globalcode – Open4education I - Base de Código 1 cd

    12factor 2 git init . 3 git add web-container/Dockerfile 4 git add web-app/* 5 git commit -m "Iniciando os trabalhos" 6 git remote add origin git@github.com:usuario/ repo.git 7 git push -u origin master
  30. Globalcode – Open4education I - Base de Código E o

    Docker?
  31. Globalcode – Open4education I - Base de Código E o

    Docker? Dockerfiles versionados
  32. Globalcode – Open4education I - Base de Código E o

    Docker? Dockerfiles versionados .dockerignore
  33. Globalcode – Open4education "Quando o relógio bate as duas, todas

    as caveiras pintam as unhas." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  34. Globalcode – Open4education II - Dependências Devem ser declaradas explicitamente

    e isoladas
  35. Globalcode – Open4education II - Dependências 1 <?php 2 3

    require_once "monolog/src/Monolog/Logger.php";
  36. Globalcode – Open4education II - Dependências 1 <?php 2 3

    require_once "monolog/src/Monolog/Logger.php"; 1 composer require monolog/monolog 2 composer install
  37. Globalcode – Open4education II - Dependências Devem ser declaradas explicitamente

    e isoladas Devem estar presentes em um arquivo manifesto (composer.json, requirements.txt, Gemfile)
  38. Globalcode – Open4education II - Dependências Devem ser declaradas explicitamente

    e isoladas Devem estar presentes em um arquivo manifesto (composer.json, requirements.txt, Gemfile) Utilizar ferramentas de automação (composer, pip, maven, bundle)
  39. Globalcode – Open4education II - Dependências Devem ser declaradas explicitamente

    e isoladas Devem estar presentes em um arquivo manifesto (composer.json, requirements.txt, Gemfile) Utilizar ferramentas de automação (composer, pip, maven, bundle) Dependências de recursos de SO devem ser vendorizadas em um novo app
  40. Globalcode – Open4education II - Dependências Devem ser declaradas explicitamente

    e isoladas Devem estar presentes em um arquivo manifesto (composer.json, requirements.txt, Gemfile) Utilizar ferramentas de automação (composer, pip, maven, bundle) Dependências de recursos de SO devem ser vendorizadas em um novo app Mudanças são rapidamente detectadas na construção
  41. Globalcode – Open4education II - Dependências E o Docker? Dependências

    ficam explícitas no Dockerfile 
 (FROM, ADD, COPY)
  42. Globalcode – Open4education II - Dependências 1 FROM nginx:1.9.9 2

    RUN apt-get update \ 3 && apt-get install -y -q --no-install-recommends \ 4 ca-certificates \ 5 wget \ 6 && apt-get clean \ 7 && rm -r /var/lib/apt/lists/* 8 RUN echo "daemon off;" >> /etc/nginx/nginx.conf \ 9 && sed -i 's/^http {/&\n server_names_hash_bucket_size 128;/g' /etc/nginx/ nginx.conf
  43. Globalcode – Open4education "Quando o relógio bate as três, todas

    as caveiras imitam chinês." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  44. Globalcode – Open4education III - Configurações Configurações devem ser armazenadas

    no ambiente
  45. Globalcode – Open4education III - Configurações Configurações devem ser armazenadas

    no ambiente Configuração é tudo que varia conforme o deploy (dev, homolog, qa, instâncias em produção)
  46. Globalcode – Open4education III - Configurações Configurações devem ser armazenadas

    no ambiente Configuração é tudo que varia conforme o deploy (dev, homolog, qa, instâncias em produção) Informações de acesso a recursos (servidores de storage, serviço de cache, acesso a banco de dados)
  47. Globalcode – Open4education III - Configurações

  48. Globalcode – Open4education III - Configurações E o Docker? Ao

    construir e ao iniciar contêineres devemos definir os valores das variáveis de ambiente
  49. Globalcode – Open4education III - Configurações 1 docker run -d

    --name web \ 2 --env TESTING="12 factor" nginx 3 docker run -d --name backend \ 4 --env-file ./env-file myimage/backend 5 docker run -d --name db \ 6 --env "MYSQL_ROOT_PASSWORD=senha" \ 7 --env "MYSQL_DATABASE=mydb" mysql
  50. Globalcode – Open4education III - Configurações 1 export ENABLE_ENV_FILE="12 factor”

    2 export DB_ROOT_PASS=“mutcha-porrada” 3 export DB_USER="maguila” 4 export DB_USER_PASS=“parabolicas-sta-rita” 5 export APP_PASS="w0rdpr355”
  51. Globalcode – Open4education III - Configurações # arquivo docker-compose.yml 1

    version: '2' 2 services: 3 db: 4 image: mysql:5.6 5 volumes: 6 - "./.data/db:/var/lib/mysql" 7 restart: always 8 environment: 9 MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS} 10 MYSQL_DATABASE: wordpress 11 MYSQL_USER: ${DB_USER} 12 MYSQL_PASSWORD: ${DB_USER_PASS}
  52. Globalcode – Open4education III - Configurações 13 wordpress: 14 depends_on:

    15 - db 16 image: wordpress:latest 17 links: 18 - db 19 ports: 20 - "8000:80" 21 restart: always 22 environment: 23 ENABLE_ENV_FILE: ${ENABLE_ENV_FILE} 24 WORDPRESS_DB_HOST: db:3306 25 WORDPRESS_DB_PASSWORD: ${APP_PASS}
  53. Globalcode – Open4education III - Configurações 1 <?php 2 3

    /** 4 * Initialize main environment vars and load Yii 2 5 */ 6 public static function init() 7 { 8 require('/var/www/vendor/autoload.php'); 9 10 // Load .env file if enabled and if it exists 11 if (getenv('ENABLE_ENV_FILE') && file_exists(self::APP_DIR.'.env')) { 12 Dotenv::load(self::APP_DIR); 13 }
  54. Globalcode – Open4education "Quando o relógio bate as quatro, todas

    as caveiras tiram retrato." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  55. Globalcode – Open4education IV - Serviços de Apoio Trate serviços

    de apoio como recursos anexos.
  56. Globalcode – Open4education IV - Serviços de Apoio Trate serviços

    de apoio como recursos anexos. São serviços consumidos via rede
  57. Globalcode – Open4education IV - Serviços de Apoio Trate serviços

    de apoio como recursos anexos. São serviços consumidos via rede Exemplos: MySQL, Redis, Memcached, APIs, serviços de e-mail, Filas
  58. Globalcode – Open4education IV - Serviços de Apoio Trate serviços

    de apoio como recursos anexos. São serviços consumidos via rede Exemplos: MySQL, Redis, Memcached, APIs, serviços de e-mail, Filas Por ser anexado e podemos trocar o recurso caso apresente problemas
  59. Globalcode – Open4education IV - Serviços de Apoio E o

    Docker? No arquivo docker-compose.yml temos as declarações dos serviços
  60. Globalcode – Open4education IV - Serviços de Apoio E o

    Docker? No arquivo docker-compose.yml temos as declarações dos serviços Os serviços de apoio também podem ser serviços externos (SAAS) ou outros contêineres
  61. Globalcode – Open4education IV - Serviços de Apoio 1 version:

    '2' 2 services: 3 db: 4 image: mysql:5.6 5 volumes: 6 - "./.data/db:/var/lib/mysql" 7 restart: always 8 environment: 9 MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS} 10 MYSQL_DATABASE: wordpress 11
  62. Globalcode – Open4education IV - Serviços de Apoio 12 wordpress:

    13 depends_on: 14 - db 15 image: wordpress:latest 16 links: 17 - db 18 - "redis1.bpnp.cfg.sae1.cache.amazonaws.com:cache-live" 19 ports: 20 - "8000:80" 21 restart: always 22 environment: 23 WORDPRESS_DB_HOST: db:3306 24 WORDPRESS_DB_PASSWORD: ${APP_PASS}
  63. Globalcode – Open4education "Quando o relógio bate as cinco, todas

    as caveiras apertam os cintos." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  64. Globalcode – Open4education V - Contruir, lançar e executar Construção

    é a montagem do artefato e provisionamento de dependências
  65. Globalcode – Open4education V - Contruir, lançar e executar Construção

    é a montagem do artefato e provisionamento de dependências Na construção que temos que detectar problemas (testes automatizados)
  66. Globalcode – Open4education V - Contruir, lançar e executar Construção

    é a montagem do artefato e provisionamento de dependências Na construção que temos que detectar problemas (testes automatizados) Lançamento é combinação do artefato com a configuração do ambiente de deploy
  67. Globalcode – Open4education V - Contruir, lançar e executar Construção

    é a montagem do artefato e provisionamento de dependências Na construção que temos que detectar problemas (testes automatizados) Lançamento é combinação do artefato com a configuração do ambiente de deploy Cada lançamento deve ter um identificador único (release)
  68. Globalcode – Open4education V - Contruir, lançar e executar Construção

    é a montagem do artefato e provisionamento de dependências Na construção que temos que detectar problemas (testes automatizados) Lançamento é combinação do artefato com a configuração do ambiente de deploy Cada lançamento deve ter um identificador único (release) Execução é a inicialização dos processos para fazer o app funcionar
  69. Globalcode – Open4education V - Contruir, lançar e executar E

    o Docker? No Docker temos o slogan: "Build, ship and run any app anywhere"
  70. Globalcode – Open4education V - Contruir, lançar e executar 1

    docker build \ 2 -f Dockerfile-production \ 3 -t username/image \ 4 ./container/ 5 docker push username/image 6 docker run -d username/images
  71. Globalcode – Open4education "Quando o relógio bate as seis, todas

    as caveiras jogam xadrez." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  72. Globalcode – Open4education VI - Processos Executar a aplicação com

    um ou mais processos
  73. Globalcode – Open4education VI - Processos Executar a aplicação com

    um ou mais processos A aplicação não deve guardar estado
  74. Globalcode – Open4education VI - Processos Executar a aplicação com

    um ou mais processos A aplicação não deve guardar estado Dados devem ser persistidos e recuperados de serviços de apoio
  75. Globalcode – Open4education VI - Processos Executar a aplicação com

    um ou mais processos A aplicação não deve guardar estado Dados devem ser persistidos e recuperados de serviços de apoio Não devem ser daemon ou ter arquivo PID, deve trabalhar com o ambiente (upstart)
  76. Globalcode – Open4education VI - Processos E no Docker? Cada

    contêiner tem seu processo único
  77. Globalcode – Open4education VI - Processos E no Docker? Cada

    contêiner tem seu processo único Pode ser adicionado processos aos contêineres
  78. Globalcode – Open4education VI - Processos 1 # docker-compose.yml 2

    redis: 3 image: redis:2.8 4 ports: 5 - "6379:6379" 6 entrypoint: ["redis-server"] 7 command: ["--appendonly", "yes"]
  79. Globalcode – Open4education VI - Processos 8 php: 9 image:

    php:7-fpm 10 links: 11 - “redis:redis.local" 12 ports: 13 - "9000:9000" 14 entrypoint: ["php-fpm"]
  80. Globalcode – Open4education "Quando o relógio bate as sete, todas

    as caveiras jogam basquete." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  81. Globalcode – Open4education VII - Vínculo de portas Exportar os

    serviços através do vínculo de portas
  82. Globalcode – Open4education VII - Vínculo de portas Exportar os

    serviços através do vínculo de portas Cada app deve escutar e receber as requisições em sua porta
  83. Globalcode – Open4education VII - Vínculo de portas Exportar os

    serviços através do vínculo de portas Cada app deve escutar e receber as requisições em sua porta E no Docker? Cada container pode exportar uma porta e o vínculo é feito em uma porta do host
  84. Globalcode – Open4education VII - Vínculo de portas Exportar os

    serviços através do vínculo de portas Cada app deve escutar e receber as requisições em sua porta E no Docker? Cada container pode exportar uma porta e o vínculo é feito em uma porta do host Podemos escolher qual porta do host será vinculada ao container
  85. Globalcode – Open4education VII - Vínculo de portas 1 #

    docker-compose.yml 2 web: 3 image: wfsilva/nginx-php7 4 ports: 5 - "80" 6 - "443" 7 - "172.16.0.10:8000:8000"
  86. Globalcode – Open4education "Quando o relógio bate as oito, todas

    as caveiras comem biscoito.” Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  87. Globalcode – Open4education VIII - Concorrência Escalar com base no

    processo usado como modelo
  88. Globalcode – Open4education VIII - Concorrência Escalar com base no

    processo usado como modelo Processos podem ser web ou workers
  89. Globalcode – Open4education VIII - Concorrência Escalar com base no

    processo usado como modelo Processos podem ser web ou workers Mais processos em paralelo, mais requisições são respondidas ou mais rápido terminam processamentos em lote.
  90. Globalcode – Open4education VIII - Concorrência E no Docker? Podemos

    escalar a quantidade de contêineres que executam uma tarefa.
  91. Globalcode – Open4education VIII - Concorrência 1 docker-compose scale web=34

    worker=23 2 docker-compose scale web=1 worker=1
  92. Globalcode – Open4education "Quando o relógio bate as nove, todas

    as caveiras se sacodem." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  93. Globalcode – Open4education IX - Descartabilidade Maximizar robustez

  94. Globalcode – Open4education IX - Descartabilidade Maximizar robustez Inicialização rápida

    e desligamento normal e suave (gracefully shutdown)
  95. Globalcode – Open4education IX - Descartabilidade Maximizar robustez Inicialização rápida

    e desligamento normal e suave (gracefully shutdown) Processos do app são descartáveis
  96. Globalcode – Open4education IX - Descartabilidade Maximizar robustez Inicialização rápida

    e desligamento normal e suave (gracefully shutdown) Processos do app são descartáveis Facilita escalonamento rápido e elástico
  97. Globalcode – Open4education IX - Descartabilidade Maximizar robustez Inicialização rápida

    e desligamento normal e suave (gracefully shutdown) Processos do app são descartáveis Facilita escalonamento rápido e elástico Evitar desligamento repentino (crash)
  98. Globalcode – Open4education IX - Descartabilidade E no Docker? Trocar

    uma configuração de um contêiner, subir novos e desligar os antigos
  99. Globalcode – Open4education IX - Descartabilidade E no Docker? Trocar

    uma configuração de um contêiner, subir novos e desligar os antigos Em um Swarm quando um nó cai os containers são reorganizados nos demais nós.
  100. Globalcode – Open4education IX - Descartabilidade 1 docker run -d

    -P \ 2 --memory=512M \ 3 --name webserver \ 4 nginx 5 docker update --memory=1G webserver
  101. Globalcode – Open4education "Quando o relógio bate as dez, todas

    as caveiras comem pastéis." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  102. Globalcode – Open4education X - Paridade Dev/Prod Manter os ambientes

    mais similares (desenvolvimento, homologação, produção)
  103. Globalcode – Open4education X - Paridade Dev/Prod Manter os ambientes

    mais similares (desenvolvimento, homologação, produção) Minimizar a lacuna de tempo (deploy em horas ou minutos)
  104. Globalcode – Open4education X - Paridade Dev/Prod Manter os ambientes

    mais similares (desenvolvimento, homologação, produção) Minimizar a lacuna de tempo (deploy em horas ou minutos) Minimizar a lacuna de pessoal (devs codam, ops fazem deploy)
  105. Globalcode – Open4education X - Paridade Dev/Prod Manter os ambientes

    mais similares (desenvolvimento, homologação, produção) Minimizar a lacuna de tempo (deploy em horas ou minutos) Minimizar a lacuna de pessoal (devs codam, ops fazem deploy) Minimizar a lacuna de ferramentas (Dev com OSX, Nginx 1.2.1, PHP 7.0.3 e MySQL 5.6 - Prod com Nginx 1.9, PHP 5.5.33 e Percona 5.6)
  106. Globalcode – Open4education X - Paridade Dev/Prod E no Docker?

    Os contêineres que rodam em dev tem as mesmas versões das instâncias em produção
  107. Globalcode – Open4education X - Paridade Dev/Prod 1 percona: 2

    image: percona:5.6 3 ports: 4 - "3306:3306" 5 environment: 6 - "MYSQL_ROOT_PASSWORD=senha" 7 - "MYSQL_DATABASE=db"
  108. Globalcode – Open4education X - Paridade Dev/Prod 8 rabbit: 9

    image: rabbitmq:3-management 10 ports: 11 - "5672:5672" 12 - "15672:15672" 13 environment: 14 - "TERM=linux" 15 - "RABBITMQ_NODENAME=rabbit" 16 - "RABBITMQ_DEFAULT_PASS=senha" 17 - "RABBITMQ_DEFAULT_USER=admin"
  109. Globalcode – Open4education X - Paridade Dev/Prod 18 redis: 19

    image: redis:2.8 20 ports: 21 - "6379:6379" 22 entrypoint: ["redis-server"] 23 command: ["--appendonly", "yes"] 24 memcached: 25 image: memcached:1.4 26 ports: 27 - "11211:11211"
  110. Globalcode – Open4education "Quando o relógio bate as onze, todas

    as caveiras sobem no bonde." Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  111. Globalcode – Open4education XI - Logs Logs como fluxo de

    eventos ordenados no tempo
  112. Globalcode – Open4education XI - Logs Logs como fluxo de

    eventos ordenados no tempo O app escreve os eventos no fluxo stdout
  113. Globalcode – Open4education XI - Logs Logs como fluxo de

    eventos ordenados no tempo O app escreve os eventos no fluxo stdout Em dev os logs são consultados acessando os arquivos
  114. Globalcode – Open4education XI - Logs Logs como fluxo de

    eventos ordenados no tempo O app escreve os eventos no fluxo stdout Em dev os logs são consultados acessando os arquivos Em homolog e produção são capturados em roteadores tipo fluent, logplex, logstash
  115. Globalcode – Open4education XI - Logs Logs como fluxo de

    eventos ordenados no tempo O app escreve os eventos no fluxo stdout Em dev os logs são consultados acessando os arquivos Em homolog e produção são capturados em roteadores tipo fluent, logplex, logstash Busca e apresentação de logs com ferramentas tipo ELK (Elastic Search, Logstash e Kibana)
  116. Globalcode – Open4education XI - Logs E o Docker? Containers

    tem drivers de log
  117. Globalcode – Open4education XI - Logs E o Docker? Containers

    tem drivers de log Suporte a json-file, syslog, journald, gelf, fluentd, awslogs e splunk
  118. Globalcode – Open4education XI - Logs 1 docker run \

    2 --log-driver=fluentd \ 3 --log-opt fluentd-address=localhost:24224 \ 4 --log-opt tag=docker.{{.Name}}
  119. Globalcode – Open4education "Quando o relógio bate as doze, todas

    as caveiras fazem pose" Tumbalacatumba tumba tá, tumbalacatumba tumba tá
  120. Globalcode – Open4education XII - Processos Administrativos Tarefas administrativas são

    como processos pontuais
  121. Globalcode – Open4education XII - Processos Administrativos Tarefas administrativas são

    como processos pontuais Tem que rodar no mesmo codebase
  122. Globalcode – Open4education XII - Processos Administrativos Tarefas administrativas são

    como processos pontuais Tem que rodar no mesmo codebase Executar em ambiente idêntico
  123. Globalcode – Open4education XII - Processos Administrativos Tarefas administrativas são

    como processos pontuais Tem que rodar no mesmo codebase Executar em ambiente idêntico Migrações de banco
  124. Globalcode – Open4education XII - Processos Administrativos Tarefas administrativas são

    como processos pontuais Tem que rodar no mesmo codebase Executar em ambiente idêntico Migrações de banco Scripts de rotinas
  125. Globalcode – Open4education XII - Processos Administrativos Docker Técnica de

    conteinerização de comandos
  126. Globalcode – Open4education XII - Processos Administrativos Docker Técnica de

    conteinerização de comandos Adicionar processo ao contêiner com docker exec
  127. Globalcode – Open4education XII - Processos Administrativos 1 # subindo

    o server 2 docker run --name db -d -P \ 3 --env "MYSQL_ROOT_PASSWORD=senha" \ 4 --env "MYSQL_DATABASE=banco" \ 5 percona
  128. Globalcode – Open4education XII - Processos Administrativos 6 # rodando

    o client 7 docker run -it \ 8 --link db:db \ 9 --rm percona \ 10 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" \
 11 -P"$MYSQL_PORT_3306_TCP_PORT" -uroot \ 12 -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
  129. Globalcode – Open4education XII - Processos Administrativos 1 # exemplo

    docker exec 2 docker exec -it phpcontainer /usr/bin/top
  130. Globalcode – Open4education Concluindo Não são regras, são sugestões de

    boas práticas
  131. Globalcode – Open4education Concluindo Não são regras, são sugestões de

    boas práticas Os 12 fatores não farão sua aplicação melhor
  132. Globalcode – Open4education Concluindo Não são regras, são sugestões de

    boas práticas Os 12 fatores não farão sua aplicação melhor Os 12 fatores vão trazer a facilidade de trabalhar com sua aplicação em ambientes de cloud
  133. Globalcode – Open4education Concluindo Não são regras, são sugestões de

    boas práticas Os 12 fatores não farão sua aplicação melhor Os 12 fatores vão trazer a facilidade de trabalhar com sua aplicação em ambientes de cloud Docker tem uma grande aderência aos 12 fatores
  134. Globalcode – Open4education Slides & Feedback https://joind.in/talk/0a473 https://speakerdeck.com/wsilva