Construindo o seu ambiente de desenvolvimento Laravel 5.5 com Docker

Victor Hugo Rocha
Training Center
Published in
3 min readJan 13, 2018

Olá, DevZ.

Vamos começar esse ano juntando dois temas que eu escrevo com frequência por aqui: Docker e Laravel. Eu comecei 2018 isolando todo o meu ambiente de desenvolvimento e vou mostrar para vocês como essa boa prática não é nenhum bicho de sete cabeças.

A essa altura do campeonato vocês já sabem como começar um projeto Laravel, se você é novo por aqui e no desenvolvimento PHP eu vou lembrar para você.

composer create-project --prefer-dist laravel/laravel <app-name>

Você pode encontrar outras maneiras de fazer a instalação e iniciar o seu projeto na documentação. Depois disso você teria que ter a versão do PHP superior a 7.0 para rodar a versão 5.5 do Laravel, além de ter o MySQL instalado para rodarmos as migrations do projeto.

Ao invés disso nós vamos criar um arquivo docker-compose.yml, arquivo de configuração do Docker, responsável por levantar os seus containers. Se você não está familiarizado com esse vocabulário recomendo que você dê alguns passos para trás na documentação do Docker e ler mais sobre a instação do docker e do docker-compose, aqui irei pular esses baby-steps e explicar o nosso arquivo de configuração.

Estou utilizando as imagens do Ambientum, excelente projeto Open-Source do Diego Hernandes e da galera do Codecasts. No repositório há uma variedade de imagens pré-configuradas com diferentes bancos de dados e ambientes de produção e desenvolvimento.

No nosso caso estamos criando dois serviços (containers): app e mysql. Para o seu projeto você deve substituir todas as ocorrências de <app-name> pelo nome do seu projeto. Com isso ao rodarmos o comando docker-compose up-d veremos o containers serem criados e podemos confirmar se eles estão levantados com o comando docker ps -a .

Além disso nós temos que rodar todos os comandos de configuração de um projeto Laravel e agora nós precisamos executar todos esses comandos dentro do nosso container Docker que é onde o nosso projeto estará rodando. Como esses comandos se repetem ao início de todo o projeto podemos deixar toda essa configuração ainda mais simples.

Ao criarmos um script run.sh conseguimos agrupar todos esses comandos em um único arquivo de configuração dentro do nosso projeto. Esse Shell Script pode ser rodado em todos os ambientes: Linux, Mac e Windows. No Windows você vai precisar do git bash e no Mac você precisa usar o prefixo bash antes de executar o script.

Assim como no arquivo anterior você precisa trocar todas as ocorrências do <app-name> pelo nome do seu projeto. Isso diz em qual dos seus containers o comando está sendo executado. O prefixo -it após o comando faz com que ele seja interativo e você receba os outputs similar ao rodar eles localmente na sua máquina.

Dessa maneira, agora você consegue ter todo o seu projeto pronto para rodar sem ao menos ter o MySQL instalado na sua máquina, dessa forma também fica muito fácil trabalhar com diferentes versões de linguagem em muitos projetos.

Dica extra: Lembre-se sempre de verificar que você está rodando o Docker caso você esteja no Windows ou Mac, um ícone do Docker deve ficar visível na sua barra de tarefas do Desktop. Além disso, caso você já tenha o MySQL instalado e queria containerizar seu ambiente, é preciso que você pare o serviço antes de executar o comando, pois a porta 3306 já estará sendo usada pelo seu serviço local.

Se você chegou até aqui não esqueça de deixar o seu clap e/ou um comentário. Se você tem interesse por Laravel ou gostou do meu texto você pode ler algum dos meus outros artigos, eu recomendo:

  1. PHP — Implementando adminLTE no Laravel
  2. PHP — Criando um CRUD com Laravel
  3. PHP — Relacionando Models e Tabelas no Laravel
  4. PHP — Escrevendo o seu primeiro teste no Laravel
  5. PHP — Atualizando a versão do Laravel para a 5.5
  6. PHP — Salvando imagens no Laravel 5.5

See you, Space Cowboy!

--

--