SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Trabalhando em
ambientes PHP com
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Darkmira Tour Community & PHP Com Rapadura - 12/2016
https://github.com/alefcastelo
https://twitter.com/alefcastelo
https://br.linkedin.com/in/alef-castelo-9639a673
https://medium.com/@alefcastelo/
Quem sou eu?
Darkmira Tour Community & PHP Com Rapadura - 12/2016
● O que é o Docker?
● Por que Docker e não Vagrant?
● Trabalhando com Docker
● Usando Docker com PHP
● Versionamento da imagem
● Dockerfile, Docker Hub, Docker Compose
Tópicos
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Você já ouviu ou falou
aquela velha frase “na
minha máquina
funciona”?
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Ou pior “no servidor
funciona”?
Darkmira Tour Community & PHP Com Rapadura - 12/2016
1. Diferenças entre o ambiente de
desenvolvimento e de produção.
2. Portabilidade da aplicação.
3. Padronização do ambiente.
Temos um problema...
Temos uma solução
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Docker é uma plataforma aberta para
desenvolvedores e administradores de
sistemas para criar, enviar e executar
aplicativos distribuídos, seja em laptops,
VMs de data center ou na nuvem.
O que é o Docker?
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Build, Ship, and Run Any
App, Anywhere
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Crie, envie e execute
contêineres em qualquer
lugar
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Container é basicamente o chroot em uso,
compartilhando o mesmo kernel do host,
onde é possível definir recursos como rede,
memória, cpu e outros.
O que são contêineres?
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Por que Docker e não
Vagrant?
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Vagrant
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Docker
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Comparação
Darkmira Tour Community & PHP Com Rapadura - 12/2016
1. São lentas para iniciar.
2. Problemas com portabilidade.
3. Precisam de mais espaço, pois
necessitam de todo o SO.
VMs
Darkmira Tour Community & PHP Com Rapadura - 12/2016
1. Rápidos para iniciar.
2. Podem ser transportados com facilidade.
3. Não necessita do SO completo, pois
rodam em cima do Kernel do Host OS.
Containers Docker
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Trabalhando com Docker
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Supondo que você já possui o docker
instalado, caso não tenha, essa é a url
de instalação:
https://docs.docker.com/engine/installation/
Darkmira Tour Community & PHP Com Rapadura - 12/2016
version Show the Docker version information
info Display system-wide information
images List images
ps List containers
run Run a command in a new container
exec Run a command in a running container
inspect Return low-level information on a container or image
kill Kill a running container
rm Remove one or more containers
A lista completa de comandos você pode conferir no link
https://docs.docker.com/engine/reference/commandline/
Comandos Básicos
1. Sempre precisamos de uma imagem para criar um container.
2. Sempre que criarmos um container, podemos expor uma porta onde será
acessível no host, fazendo com que você tenha possibilidade de
disponibilizar serviços para fora do container.
3. Possibilidade de entrar e sair de dentro do container, isso da facilidade de
modificação no container.
4. Todo container dura enquanto seu processo estiver sendo executado.
5. É possível, de fora do container executar comandos dentro dele.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Trabalhando com Docker
pc-docker:~ alefcastelo$ docker run -ti debian /bin/bash
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
75a822cd7888: Pull complete
Digest: sha256:f7062cf040f67f0c26ff46b3b44fe036c29468a7e69d8170f37c57f2eec1261b
Status: Downloaded newer image for debian:latest
root@3fb577e482d8:/# cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
…
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Criando um container Debian
A partir desse momento eu tenho um container onde posso
instalar libs/bins para atender as necessidades da minha
aplicação, fazendo com que seja desnecessário possuir
ambiente localmente instalado, evitando aquele monte de
serviço sendo em paralelo.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Trabalhando com Docker
Com o docker você pode baixar imagens oficiais, PHP,
MySQL, Wordpress, Drupal onde é possível criar containers
com ambientes pré-configurados, sem que haja a
necessidade de instalação de dependências.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Trabalhando com Docker
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Trabalhando com Docker
pc-docker:~ alefcastelo$ docker run -ti php:5.4 /bin/bash
Unable to find image 'php:5.4' locally
5.4: Pulling from library/php
1a1bc86469d0: Pull complete
Digest: sha256:6432eb062e481413223df92f86b2b93b2011a9f807d1461cb7ba38c2b646464a
Status: Downloaded newer image for php:5.4
root@3fb577e482d8:/# php -v
PHP 5.4.45 (cli) (built: Dec 5 2015 08:26:46)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
…
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Usando Docker com PHP
Para iniciar uma aplicação php em um container você pode entrar na pasta da
aplicação e executar o comando
docker run -v $PWD:/var/www/html 
-p 80:80 
-ti php:5.6-apache 
/bin/bash
e já é o suficiente pra você possuir uma aplicação PHP rodando dentro do seu
container, para visualizar essa aplicação em funcionamento acesse o localhost
na porta 80.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Usando Docker com PHP
Se você está usando uma imagem oficial php, e caso você
precise instalar novas dependências, diferentes da que já
possui na imagem oficial, use o comando que já foi inserido
na imagem oficial exemplo:
docker-php-ext-install pgsql zip mysql gd
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Versionamento
da imagem
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Versionamento da imagem
Assim como existe o github, gitlab, bitbucket e outros, o docker
possui o Docker Hub, que é um lugar que prover repositório, onde
podemos salvar a imagem que criamos seja via Dockerfile ou um
Snapshot do Container.
Para criar uma imagem partindo de um container você executa o
seguinte comando:
docker commit <container_id> <image_name>:<image_tag>
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Dockerfile
O Dockerfile é um arquivo onde dentro dele
contém instruções que irão automatizar o
processo de criação de imagens.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
FROM php:5.6-apache
WORKDIR /var/www/html
RUN apt-get update && apt-get install -y 
libpcre3-dev 
libzip-dev
RUN a2enmod rewrite
RUN pecl install SPL_Types
RUN docker-php-ext-install zip
RUN touch /usr/local/etc/php/conf.d/spl.ini && echo "extension=spl_types.so" >
/usr/local/etc/php/conf.d/spl.ini
Dockerfile
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Dockerfile
Possuindo o arquivo anterior com o nome ‘Dockerfile’, basta
entrar dentro da pasta onde o arquivo estar e executar o
seguinte comando:
docker build -t <imagem_name>:<tag_name> .
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Dockerfile
O Dockerfile dá total liberdade para você criar suas imagem, e
liberar os arquivos fontes para que outras pessoas possam
melhorar e evoluir sua imagem adicionando novas
configurações. Esse é o Dockerfile da imagem oficial do
php:5.6-apache
https://github.com/docker-library/php/blob/master/5.6/Dockerfile
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Dica Dockerfile
Ao criar uma imagem a partir de um Dockerfile, pode ser
necessário alterar a configuração original de algo que já esteja
dentro do sistema, exemplo: Caso você esteja baseando seu
Dockerfile na imagem oficial do php, php:5.6-apache você irá
precisar usar a instrução ADD, que irá adicionar um arquivo
para dentro da imagem, assim substituindo o arquivo original
caso o arquivo tenha o mesmo caminho.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Docker Hub
Docker hub é o repositório onde você pode colocar suas
imagens, facilitando o download dessa imagem para uso em
qualquer lugar, é como um git clone, essas imagens podem
ser baixadas por terceiros caso ela esteja marcada como
pública, ou somente por você caso forem privadas.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Docker Compose
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Docker Compose
O Docker Compose, é um arquivo que contém instruções
que facilita a utilização de vários contêineres, sendo usado
ao mesmo tempo por uma aplicação, exemplo: para que
minha aplicação funcione eu preciso de um container, com
MySQL, outro com PHP, Redis e etc. Isso é o que
chamamos de Orquestração de Containers.
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Docker Compose
web:
image: alefcastelo/php5.6-apache
volumes:
- ./:/var/www/
ports:
- 80:80
links:
- db:db
db:
image: mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=symfony
volumes:
- ./db:/var/lib/mysql
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Docker Compose
Com esse arquivo eu consigo subir um ambiente completo,
com containers se comunicando, separando cada camada
da minha aplicação.
Para executar as instruções do docker-compose.yml basta
executar o comando:
docker-compose up -d
Darkmira Tour Community & PHP Com Rapadura - 12/2016
Perguntas?

Mais conteúdo relacionado

Mais procurados

Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerWellington Silva
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoDiogo Lucas
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_frameworkMilton Rodrigues
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerLucas Arbiza
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...tdc-globalcode
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoSérgio Lima
 

Mais procurados (20)

Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Ambiente de desenvolvimento com docker e ruby on rails
Ambiente de desenvolvimento com  docker e ruby on railsAmbiente de desenvolvimento com  docker e ruby on rails
Ambiente de desenvolvimento com docker e ruby on rails
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolso
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_framework
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 
Docker compose
Docker composeDocker compose
Docker compose
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Docker volumes
Docker volumesDocker volumes
Docker volumes
 
Python CGI
Python CGIPython CGI
Python CGI
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 

Destaque

Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 
Docker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopDocker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopChris Tankersley
 
Computer-free Website Development Demo - WordPressDC Jan 2015
 Computer-free Website Development Demo - WordPressDC Jan 2015 Computer-free Website Development Demo - WordPressDC Jan 2015
Computer-free Website Development Demo - WordPressDC Jan 2015Anthony D. Paul
 
Engine lab software hybrid cloud specialists
Engine lab software hybrid cloud specialistsEngine lab software hybrid cloud specialists
Engine lab software hybrid cloud specialistsJohn Rowan
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting StartedWildan Maulana
 
Introduction To Git Workshop
Introduction To Git WorkshopIntroduction To Git Workshop
Introduction To Git Workshopthemystic_ca
 
Docker for PHP Developers - ZendCon 2016
Docker for PHP Developers - ZendCon 2016Docker for PHP Developers - ZendCon 2016
Docker for PHP Developers - ZendCon 2016Chris Tankersley
 
Php development with Docker
Php development with DockerPhp development with Docker
Php development with DockerMichael Bui
 
2013 Social Admissions Report
 2013 Social Admissions Report   2013 Social Admissions Report
2013 Social Admissions Report Uversity, Inc.
 
Docker & PHP - Practical use case
Docker & PHP - Practical use caseDocker & PHP - Practical use case
Docker & PHP - Practical use caserjsmelo
 
Microservices without Servers
Microservices without ServersMicroservices without Servers
Microservices without ServersDev_Events
 
Information Design Web Planning Mockup
Information Design Web Planning MockupInformation Design Web Planning Mockup
Information Design Web Planning MockupANGELA Smithers
 
NTR Lab - bespoke software development in Russia
NTR Lab - bespoke software development in RussiaNTR Lab - bespoke software development in Russia
NTR Lab - bespoke software development in RussiaOlessya
 
component based softwrae engineering Cbse
component based softwrae engineering Cbsecomponent based softwrae engineering Cbse
component based softwrae engineering CbseSravs Dals
 
An introduction to contianers and Docker for PHP developers
An introduction to contianers and Docker for PHP developersAn introduction to contianers and Docker for PHP developers
An introduction to contianers and Docker for PHP developersRobert McFrazier
 
The App Evolution
The App Evolution The App Evolution
The App Evolution Dev_Events
 
Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices Dev_Events
 

Destaque (20)

Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 
Docker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopDocker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 Workshop
 
Computer-free Website Development Demo - WordPressDC Jan 2015
 Computer-free Website Development Demo - WordPressDC Jan 2015 Computer-free Website Development Demo - WordPressDC Jan 2015
Computer-free Website Development Demo - WordPressDC Jan 2015
 
Engine lab software hybrid cloud specialists
Engine lab software hybrid cloud specialistsEngine lab software hybrid cloud specialists
Engine lab software hybrid cloud specialists
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting Started
 
Introduction To Git Workshop
Introduction To Git WorkshopIntroduction To Git Workshop
Introduction To Git Workshop
 
Docker for PHP Developers - ZendCon 2016
Docker for PHP Developers - ZendCon 2016Docker for PHP Developers - ZendCon 2016
Docker for PHP Developers - ZendCon 2016
 
Spm file33
Spm file33Spm file33
Spm file33
 
Especialidade de inclusão 5
Especialidade de inclusão 5Especialidade de inclusão 5
Especialidade de inclusão 5
 
Php development with Docker
Php development with DockerPhp development with Docker
Php development with Docker
 
2013 Social Admissions Report
 2013 Social Admissions Report   2013 Social Admissions Report
2013 Social Admissions Report
 
Docker & PHP - Practical use case
Docker & PHP - Practical use caseDocker & PHP - Practical use case
Docker & PHP - Practical use case
 
Microservices without Servers
Microservices without ServersMicroservices without Servers
Microservices without Servers
 
Information Design Web Planning Mockup
Information Design Web Planning MockupInformation Design Web Planning Mockup
Information Design Web Planning Mockup
 
MockupBuilder
MockupBuilderMockupBuilder
MockupBuilder
 
NTR Lab - bespoke software development in Russia
NTR Lab - bespoke software development in RussiaNTR Lab - bespoke software development in Russia
NTR Lab - bespoke software development in Russia
 
component based softwrae engineering Cbse
component based softwrae engineering Cbsecomponent based softwrae engineering Cbse
component based softwrae engineering Cbse
 
An introduction to contianers and Docker for PHP developers
An introduction to contianers and Docker for PHP developersAn introduction to contianers and Docker for PHP developers
An introduction to contianers and Docker for PHP developers
 
The App Evolution
The App Evolution The App Evolution
The App Evolution
 
Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices Building Next Generation Applications and Microservices
Building Next Generation Applications and Microservices
 

Semelhante a Trabalhando em ambientes php com docker

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaMatheus Fidelis
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Wallison Marra
 
Docker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONDocker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONIago Machado
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogCesar Augusto Nogueira
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1 Edgar Dantas
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Docker - tutorial iniciantes
Docker - tutorial iniciantesDocker - tutorial iniciantes
Docker - tutorial iniciantesDiogoSoares847327
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engineHudson Brendon
 

Semelhante a Trabalhando em ambientes php com docker (20)

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Conceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java NoroesteConceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java Noroeste
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Docker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONDocker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHON
 
PHP com Docker
PHP com DockerPHP com Docker
PHP com Docker
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
MigraçãO
MigraçãOMigraçãO
MigraçãO
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Docker - tutorial iniciantes
Docker - tutorial iniciantesDocker - tutorial iniciantes
Docker - tutorial iniciantes
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 

Último

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Trabalhando em ambientes php com docker

  • 1. Trabalhando em ambientes PHP com Darkmira Tour Community & PHP Com Rapadura - 12/2016
  • 2. Darkmira Tour Community & PHP Com Rapadura - 12/2016 https://github.com/alefcastelo https://twitter.com/alefcastelo https://br.linkedin.com/in/alef-castelo-9639a673 https://medium.com/@alefcastelo/ Quem sou eu?
  • 3. Darkmira Tour Community & PHP Com Rapadura - 12/2016 ● O que é o Docker? ● Por que Docker e não Vagrant? ● Trabalhando com Docker ● Usando Docker com PHP ● Versionamento da imagem ● Dockerfile, Docker Hub, Docker Compose Tópicos
  • 4. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Você já ouviu ou falou aquela velha frase “na minha máquina funciona”?
  • 5. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Ou pior “no servidor funciona”?
  • 6. Darkmira Tour Community & PHP Com Rapadura - 12/2016 1. Diferenças entre o ambiente de desenvolvimento e de produção. 2. Portabilidade da aplicação. 3. Padronização do ambiente. Temos um problema...
  • 7. Temos uma solução Darkmira Tour Community & PHP Com Rapadura - 12/2016
  • 8. Darkmira Tour Community & PHP Com Rapadura - 12/2016
  • 9. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Docker é uma plataforma aberta para desenvolvedores e administradores de sistemas para criar, enviar e executar aplicativos distribuídos, seja em laptops, VMs de data center ou na nuvem. O que é o Docker?
  • 10. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Build, Ship, and Run Any App, Anywhere
  • 11. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Crie, envie e execute contêineres em qualquer lugar
  • 12. Darkmira Tour Community & PHP Com Rapadura - 12/2016
  • 13. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Container é basicamente o chroot em uso, compartilhando o mesmo kernel do host, onde é possível definir recursos como rede, memória, cpu e outros. O que são contêineres?
  • 14. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Por que Docker e não Vagrant?
  • 15. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Vagrant
  • 16. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Docker
  • 17. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Comparação
  • 18. Darkmira Tour Community & PHP Com Rapadura - 12/2016 1. São lentas para iniciar. 2. Problemas com portabilidade. 3. Precisam de mais espaço, pois necessitam de todo o SO. VMs
  • 19. Darkmira Tour Community & PHP Com Rapadura - 12/2016 1. Rápidos para iniciar. 2. Podem ser transportados com facilidade. 3. Não necessita do SO completo, pois rodam em cima do Kernel do Host OS. Containers Docker
  • 20. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Trabalhando com Docker
  • 21. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Supondo que você já possui o docker instalado, caso não tenha, essa é a url de instalação: https://docs.docker.com/engine/installation/
  • 22. Darkmira Tour Community & PHP Com Rapadura - 12/2016 version Show the Docker version information info Display system-wide information images List images ps List containers run Run a command in a new container exec Run a command in a running container inspect Return low-level information on a container or image kill Kill a running container rm Remove one or more containers A lista completa de comandos você pode conferir no link https://docs.docker.com/engine/reference/commandline/ Comandos Básicos
  • 23. 1. Sempre precisamos de uma imagem para criar um container. 2. Sempre que criarmos um container, podemos expor uma porta onde será acessível no host, fazendo com que você tenha possibilidade de disponibilizar serviços para fora do container. 3. Possibilidade de entrar e sair de dentro do container, isso da facilidade de modificação no container. 4. Todo container dura enquanto seu processo estiver sendo executado. 5. É possível, de fora do container executar comandos dentro dele. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Trabalhando com Docker
  • 24. pc-docker:~ alefcastelo$ docker run -ti debian /bin/bash Unable to find image 'debian:latest' locally latest: Pulling from library/debian 75a822cd7888: Pull complete Digest: sha256:f7062cf040f67f0c26ff46b3b44fe036c29468a7e69d8170f37c57f2eec1261b Status: Downloaded newer image for debian:latest root@3fb577e482d8:/# cat /etc/*-release PRETTY_NAME="Debian GNU/Linux 8 (jessie)" NAME="Debian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" … Darkmira Tour Community & PHP Com Rapadura - 12/2016 Criando um container Debian
  • 25. A partir desse momento eu tenho um container onde posso instalar libs/bins para atender as necessidades da minha aplicação, fazendo com que seja desnecessário possuir ambiente localmente instalado, evitando aquele monte de serviço sendo em paralelo. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Trabalhando com Docker
  • 26. Com o docker você pode baixar imagens oficiais, PHP, MySQL, Wordpress, Drupal onde é possível criar containers com ambientes pré-configurados, sem que haja a necessidade de instalação de dependências. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Trabalhando com Docker
  • 27. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Trabalhando com Docker pc-docker:~ alefcastelo$ docker run -ti php:5.4 /bin/bash Unable to find image 'php:5.4' locally 5.4: Pulling from library/php 1a1bc86469d0: Pull complete Digest: sha256:6432eb062e481413223df92f86b2b93b2011a9f807d1461cb7ba38c2b646464a Status: Downloaded newer image for php:5.4 root@3fb577e482d8:/# php -v PHP 5.4.45 (cli) (built: Dec 5 2015 08:26:46) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies …
  • 28. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Usando Docker com PHP Para iniciar uma aplicação php em um container você pode entrar na pasta da aplicação e executar o comando docker run -v $PWD:/var/www/html -p 80:80 -ti php:5.6-apache /bin/bash e já é o suficiente pra você possuir uma aplicação PHP rodando dentro do seu container, para visualizar essa aplicação em funcionamento acesse o localhost na porta 80.
  • 29. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Usando Docker com PHP Se você está usando uma imagem oficial php, e caso você precise instalar novas dependências, diferentes da que já possui na imagem oficial, use o comando que já foi inserido na imagem oficial exemplo: docker-php-ext-install pgsql zip mysql gd
  • 30. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Versionamento da imagem
  • 31. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Versionamento da imagem Assim como existe o github, gitlab, bitbucket e outros, o docker possui o Docker Hub, que é um lugar que prover repositório, onde podemos salvar a imagem que criamos seja via Dockerfile ou um Snapshot do Container. Para criar uma imagem partindo de um container você executa o seguinte comando: docker commit <container_id> <image_name>:<image_tag>
  • 32. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Dockerfile O Dockerfile é um arquivo onde dentro dele contém instruções que irão automatizar o processo de criação de imagens.
  • 33. Darkmira Tour Community & PHP Com Rapadura - 12/2016 FROM php:5.6-apache WORKDIR /var/www/html RUN apt-get update && apt-get install -y libpcre3-dev libzip-dev RUN a2enmod rewrite RUN pecl install SPL_Types RUN docker-php-ext-install zip RUN touch /usr/local/etc/php/conf.d/spl.ini && echo "extension=spl_types.so" > /usr/local/etc/php/conf.d/spl.ini Dockerfile
  • 34. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Dockerfile Possuindo o arquivo anterior com o nome ‘Dockerfile’, basta entrar dentro da pasta onde o arquivo estar e executar o seguinte comando: docker build -t <imagem_name>:<tag_name> .
  • 35. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Dockerfile O Dockerfile dá total liberdade para você criar suas imagem, e liberar os arquivos fontes para que outras pessoas possam melhorar e evoluir sua imagem adicionando novas configurações. Esse é o Dockerfile da imagem oficial do php:5.6-apache https://github.com/docker-library/php/blob/master/5.6/Dockerfile
  • 36. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Dica Dockerfile Ao criar uma imagem a partir de um Dockerfile, pode ser necessário alterar a configuração original de algo que já esteja dentro do sistema, exemplo: Caso você esteja baseando seu Dockerfile na imagem oficial do php, php:5.6-apache você irá precisar usar a instrução ADD, que irá adicionar um arquivo para dentro da imagem, assim substituindo o arquivo original caso o arquivo tenha o mesmo caminho.
  • 37. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Docker Hub Docker hub é o repositório onde você pode colocar suas imagens, facilitando o download dessa imagem para uso em qualquer lugar, é como um git clone, essas imagens podem ser baixadas por terceiros caso ela esteja marcada como pública, ou somente por você caso forem privadas.
  • 38. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Docker Compose
  • 39. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Docker Compose O Docker Compose, é um arquivo que contém instruções que facilita a utilização de vários contêineres, sendo usado ao mesmo tempo por uma aplicação, exemplo: para que minha aplicação funcione eu preciso de um container, com MySQL, outro com PHP, Redis e etc. Isso é o que chamamos de Orquestração de Containers.
  • 40. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Docker Compose web: image: alefcastelo/php5.6-apache volumes: - ./:/var/www/ ports: - 80:80 links: - db:db db: image: mysql ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=symfony volumes: - ./db:/var/lib/mysql
  • 41. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Docker Compose Com esse arquivo eu consigo subir um ambiente completo, com containers se comunicando, separando cada camada da minha aplicação. Para executar as instruções do docker-compose.yml basta executar o comando: docker-compose up -d
  • 42. Darkmira Tour Community & PHP Com Rapadura - 12/2016 Perguntas?