Slide 1

Slide 1 text

CRIANDO UM AMBIENTE DE DESENVOLVIMENTO PHP COM DOCKER COMPOSE Fernando Silva @FernandoDebrand

Slide 2

Slide 2 text

Sobre mim! Eu sou Fernando Silva Formado em Análise e Desenvolvimento de Sistemas pela Faculdade Senac Porto Alegre, desenvolvedor PHP na empresa e-Sales Soluções de Integração e membro da Comunidade PHPRS. Você pode encontrar-me em @FernandoDebrand.

Slide 3

Slide 3 text

VISÃO GERAL 1 - O que é Docker? 2 - O que é Docker Compose? 3 - Problema de padronização 4 - Solução 5 - Conteinerização 6 - Containers vs. VMs. 7 - Criando um ambiente

Slide 4

Slide 4 text

O QUE É DOCKER?

Slide 5

Slide 5 text

O QUE É DOCKER? Docker é uma plataforma Open Source que permite criar, executar, testar e implantar aplicativos distribuidos dentro de containers de software.

Slide 6

Slide 6 text

O QUE É DOCKER COMPOSE?

Slide 7

Slide 7 text

O QUE É DOCKER COMPOSE? O Docker Compose é uma ferramenta para a criação e execução de múltiplos containers de aplicação. Com o Compose, você usa um arquivo do tipo yml para definir como será o ambiente de sua aplicação e usando um único comando você criará e iniciará todos os serviços definidos.

Slide 8

Slide 8 text

PROBLEMA DE PADRONIZAÇÃO

Slide 9

Slide 9 text

PROBLEMA DE PADRONIZAÇÃO

Slide 10

Slide 10 text

SOLUÇÃO

Slide 11

Slide 11 text

SOLUÇÃO Virtualização - Vantagens: ∎ Mesma VM nos ambientes de DEV, HML e PRD ∎ Padronização de ambientes

Slide 12

Slide 12 text

SOLUÇÃO Virtualização - Desvantagens: ∎ Montagem e inicialização lentos ∎ Utiliza muitos recursos de hardware

Slide 13

Slide 13 text

CONTEINERIZAÇÃO

Slide 14

Slide 14 text

CONTEINERIZAÇÃO LXC - Linux Containers: ∎ Jul/2008 - Kernel 2.6.26 + ∎ Compartilha kernel e libs com o host ∎ Isola processo nos Control Groups (CGroups) ∎ Difícil gerenciar

Slide 15

Slide 15 text

CONTEINERIZAÇÃO

Slide 16

Slide 16 text

CONTEINERIZAÇÃO Docker: ∎ Compartilhamento de imagens (Docker Hub) ∎ Receita para criação de container (Dockerfile) ∎ Camada de Api REST ∎ Inovando □ Docker Machine (Windows ou Mac) □ Docker Compose (multi-container) □ Docker Swarm (cluster)

Slide 17

Slide 17 text

CONTAINERS vs. VMs

Slide 18

Slide 18 text

CONTAINERS vs. VMs

Slide 19

Slide 19 text

CRIANDO UM AMBIENTE

Slide 20

Slide 20 text

CRIANDO UM AMBIENTE Container de servidor web (Dockerfile): ∎ FROM php:5.6-apache ∎ RUN docker-php-ext-install mysqli

Slide 21

Slide 21 text

CRIANDO UM AMBIENTE Container de servidor web (docker-compose.yml): ∎ php: ∎ build: ./Dockerfile ∎ ports: ∎ - "80:80" ∎ - "443:443" ∎ volumes: ∎ - ./www:/var/www/html

Slide 22

Slide 22 text

CRIANDO UM AMBIENTE Container de banco de dados (docker-compose.yml): ∎ db: ∎ image: mysql:5.7 ∎ volumes: ∎ - /var/lib/mysql ∎ environment: ∎ - MYSQL_ROOT_PASSWORD=phprs ∎ - MYSQL_DATABASE=phprs

Slide 23

Slide 23 text

CRIANDO UM AMBIENTE Conectando os dois containers (docker-compose.yml): ∎ php: ∎ build: ./Dockerfile ∎ ports: ∎ - "80:80" ∎ - "443:443" ∎ volumes: ∎ - ./www:/var/www/html ∎ links: ∎ - db ∎ db: ∎ image: mysql:5.7 ∎ volumes: ∎ - /var/lib/mysql ∎ environment: ∎ - MYSQL_ROOT_PASSWORD=phprs ∎ - MYSQL_DATABASE=phprs

Slide 24

Slide 24 text

DEMO - http://www.phprs.com.br/2016/05/criando-um-ambiente-de-desenvolvimento-php-com-docker-compose/ - https://speakerdeck.com/fernandodebrando $ docker-compose up

Slide 25

Slide 25 text

OBRIGADO! Alguma pergunta? Você pode me encontrar em @FernandoDebrand. Participe da comunidade PHPRS. phprs.com.br rselephants @phprs phprs.slack.com meetup.com/php-rs