Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker for PHP Developers

Docker for PHP Developers

Já ouviu aquela velha frase: "na minha máquina funciona"? Muito chato, né?

Vou apresentar para vocês um solução para esse e outros problemas utilizando o Docker em ambientes de desenvolvimento e produção. O Docker faz uso de uma tecnologia conhecida como Linux Containers e facilita muito o processo de deploy da sua aplicação PHP.

Jonata Weber

April 09, 2016
Tweet

More Decks by Jonata Weber

Other Decks in Technology

Transcript

  1. Docker for PHP Developers Por Jonata Weber

  2. Era uma vez...

  3. Oi, meu nome é Ted!

  4. Alice, pode fazer o deploy! Ok, Ted!

  5. Olá! #empreendedor #programador #fãDoRaulSeixas

  6. Virtual Machines

  7. None
  8. None
  9. Virtual Machines Vantagem • Isolação total dos ambientes Desvantagens •

    Alto consumo de memória e disco; • Alto overhead e baixa performance; • Inicialização lenta; • Lento para recriar e provisionar;
  10. Linux Containers

  11. "LXC is a userspace interface for the Linux kernel containment

    features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers."
  12. None
  13. Kernel Features • Kernel namespaces (ipc, uts, mount, pid, network

    and user) • Apparmor and SELinux profiles • Seccomp policies • Chroots (using pivot_root) • Kernel capabilities • CGroups (control groups)
  14. Containers Vantagens • Inicialização em milissegundos • Menos consumo de

    memória e disco • Aplicação 2x mais rápida (em relação a VMs) • Múltiplos containers no mesmo SO Desvantagens • Só é nativo no Linux (uso de VMs em outros SOs)
  15. None
  16. None
  17. None
  18. None
  19. O que é o Docker? • Open Source (pela dotCloud

    em março de 2008) • Desenvolvimento, Implantação e Execução • Desenvolvido em Golang • Linux Containers • Interface própria para acessar namespaces, cgroup e afins • Images Layers • Disco, memória, CPU e rede são isolados
  20. Um mundo além dos containers!

  21. Por que devo usá-lo? • Ambientes semelhantes • Aplicação como

    pacote completo • Padronização e replicação • Infraestrutura e desenvolvimento juntos! • Comunidade
  22. Ecossistema Docker • Docker Engine • Docker Compose • Docker

    Machine • Docker Hub • Kitematic • Docker Swarm
  23. Docker Engine

  24. Docker Machine

  25. Let's code!

  26. Instale o Docker Toolbox https://www.docker.com/products/docker-toolbox

  27. Docker sem GNU/Linux

  28. Hello, Docker! $ docker run hello-world 1. Checa se existe

    a imagem "hello-world" 2. Faz o download da imagem (se ainda não foi baixado) 3. Carrega a imagem e executa!
  29. PHP7 container :) $ docker run php:7 php -v

  30. Rodando um PHP7 webserver $ docker run -d \ --name

    web7 \ -p 8000:8000 \ -v $PWD:/usr/src/myapp \ php:7 php -S 0.0.0.0:8000
  31. MySQL container $ docker run -d \ --name db \

    -e MYSQL_ROOT_PASSWORD=123456 \ -p 3306:3306 \ mysql
  32. Olá, Dockerfile!

  33. Criando minha primeira imagem FROM php:7 CMD php -v $

    docker build -t php7-version -f Dockerfile . $ docker run php7-version Dockerfile
  34. PHP7 webserver com Dockerfile FROM php:7 COPY ./ /usr/src/myapp WORKDIR

    /usr/src/myapp CMD php -S 0.0.0.0:9000 EXPOSE 9000 Dockerfile
  35. PHP7 + Apache + MySQL #dockerfile FROM php:7.0.5-apache RUN docker-php-ext-install

    pdo pdo_mysql COPY . /var/www/html $ docker run -d --name db -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql $ docker build -t myapp-php7 . $ docker run -d --name myapp --link db:db -p 80:80 myapp-php7
  36. Docker Compose web: build: . ports: - "80:80" volumes: -

    ./:/usr/src/myapp links: - db db: image: mysql environment: - MYSQL_ROOT_PASSWORD=123456 Dockerfile $ docker-compose up -d
  37. Para concluir...

  38. Projetos Interessantes • phpdocker.io • Kubernetes • Tsuru.io • Apache

    Mesos • Docker Swarm
  39. Livros sobre Docker

  40. None
  41. Obrigado! @JonataWeber [email protected]

  42. Referências https://www.docker.com/what-docker https://medium.com/iron-io-blog/why-and-how-to-use-docker-for-development-a156c1de3b24 https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-overview-of-containerization http://www.infoq.com/br/presentations/docker-e-containers http://www.newmediacampaigns.com/blog/docker-for-php-developers http://www.slideshare.net/jpetazzo/introduction-docker-linux-containers-lxc http://techfree.com.br/2015/12/entendendo-armazenamentos-de-dados-no-docker/ https://leanpub.com/dockerparadesenvolvedores