Ambiente de Desenvolvimento PHP com Docker - Parte 1 - IDE, PHP & Banco de dados

Danilo Lutz
JunDevelopers
Published in
4 min readAug 29, 2018

--

Fala aí pessoal, como vocês estão? Espero que estejam bem e inspirados também, pois hoje vamos montar um ambiente de desenvolvimento como está descrito no título desse artigo.

A ideia dessa série de artigos é que tenhamos um ambiente pronto para o uso assim que é baixado do git (partirei do pré suposto que vocês conhecem git e seus comandos, pois não irei explicar os comandos em si, caso não conheçam recomendo que estudem como tarefa rsrsrs).

Que fique claro que não vou explicar aqui que Docker é um container, que você faz o pull das imagens e blá blá blá, isso vocês já devem estar cansados de saber e ver internet a fora… Vocês estão aqui para pôr a mão na massa, antes que eu me esqueça os comandos do Docker como docker ps e outros, também são por conta de vocês… Vamos lá? (sim eu copiei e colei do artigo anterior sobre .Net Core rsrsrs, porém é importante que fique claro).

Do que precisaremos:

  • Um sistema operacional (Windows, Linux e/ou Mac) - Sim, já vou começar com as piadas idiotas hehehe.
  • Docker - Afff Danilo…
  • Docker Compose: Dependendo do SO, leia-se Linux.
  • Git: Para o controle de versão.
  • Um terminal: Bash, Powershell ou outro de sua preferência.
  • Visual Studio Code: Sim, vscode, eu uso ele para PHP me julguem, mas experimentem primeiro ;-)

Este artigo também parte do princípio que vocês não precisarão instalar nada além do Docker e da IDE em seus SOs. Sendo assim, faremos uma rede usando um arquivo docker-compose.yml.

Deixe que os jogos comecem…

Vamos organizar nosso código com a seguinte estrutura:

app/
|_ .docker
| _ _ Dockerfile
| _ _ vhost.conf
|_ index.php
|_ docker-compose.yml

Para sabermos se funcionou, quando criarmos o index.php vamos colocar algo que ninguém nunca viu, nem usou na vida (selo ironia):

<?php echo phpinfo();

O arquivo Dockerfile deve conter o conteúdo abaixo:

Arquivo Dockerfile

A linha 3 configura o Docker para que nossa raiz externa seja a pasta de trabalho juntamente com a linha 11 do arquivo docker-compose.yml que verá mais abaixo.

Para facilitar nossa vida, vamos basear nossa imagem já na imagem do PHP já com Apache como podem ver na linha 1 do arquivo Dockerfile. Logo precisamos configurar o virtual host do Apache. Segue abaixo:

Arquivo vhost.conf

Finalmente vamos ao maestro que rege essa orquestra toda, o arquivo docker-compose.yml como segue:

Arquivo docker-compose.yml

Como citei anteriormente a linha 11 cria um volume, mapeando a pasta raiz do projeto para a pasta /var/www/html já mapeada na linha 3 do arquivo Dockerfile que representa nosso projeto dentro do container do PHP.

Na linha 14 temos a definição do banco de dados, aqui usaremos o mariadb, evolução do MySQL (Aguardando os mimimis). Nas linhas de 18 - 22 temos as configurações do banco de dados.

Vamos pôr esse troço para funcionar?

Colocando a orquestra para trabalhar

Após todos esses passos, chegou a hora de rodar para vermos, vamos através de um terminal na pasta do projeto e digite:

$ docker-compose up --build

Esse comando irá fazer o pull das imagens necessárias, construir as nossas imagens e contêineres (leia-se Dockerfile) e já subir o ambiente em seguida, graças ao parâmetro --build. Subir o ambiente é responsabilidade do comando up. Show né comandinho all included.

E agora, Danilo? Ué agora vocês acessem a seguite URL no navegador:

http://localhost/

Caso tenham alterado a porta no arquivo docker-compose.yml, adequar na URL.

Acessando: http://localhost

Um aplicativo para conectar no banco de dados não é exatamente um pré requisito para esse artigo, mas… espero que tenham um aí, usarei o Workbench para mostrar como acessar. Configure uma nova conexão no Workbench como na imagem abaixo. Mas a ideia é que nem desse aplicativo precisaremos, como veremos mais a frente…

Configurações para acessar o banco de dados.

E como podem ver na imagem abaixo, destacado em verde, o banco de dados também já foi criado.

Checando a criação do banco de dados.

Por favor, não deixem de compartilhar, comentar e deixar seu feedback.

Referências:

--

--

Danilo Lutz
JunDevelopers

Obsessed for learning. OOP, PHP, C# and Python lover. Since 2003 coding...