DEV Community

Henrique Weiand
Henrique Weiand

Posted on • Edited on

Laravel: Lumen CRUD + Docker + Tests — Introdução e ambiente

Para quem já acompanha ou acompanhou meu jeito de fazer posts sabe que gosto bastante de trazer conteúdos para o medium dos quais passei por alguma experiência ou ia passar, e este aqui não será diferente não! Desta vez quero fazer alguns posts sobre um teste que fiz em uma empresa, a Send4 da qual tinha uma proposta onde era necessário a construção de uma aplicação em framework** php Laravel *que realizasse um *CRUD através do uso de APIs com recursos como validações e um esquema simples de tabelas.

Bom agora como já temos um overview da proposta, quero comentar que nesta proposta abordei bastante coisas legais como docker, docker-compose, migrations, factory e testes unitários porem vou abordar poucas coisas por vez… assim teremos posts diretos e bem segmentados/estruturados, ok?

Primeiro ponto?

A proposta pede a inicialmente que o projeto seja feito em Laravel, ok! Porem para quem conhece um pouco mais esse maravilhoso framework sabe que o Laravel seria um dos pacotes mais completos, onde temos um arsenal de plugins que vem juntos neste pacote como por exemplo o **blade** para a construção de interfaces, as famosas **views. *Como a intensão é um serviço de APIs, podemos e consequentemente não usaremos o blade assim como outros recursos desta versão, podemos optar por algo mais compacto como o tão querido **Lumen*
Lumen - PHP Micro-Framework By Laravel

Ok, vamos mostrar performance nesse teste galera!

Lumen como comentado tem muitaaas coisas a menos no fator libs do que o pacote tradicional Laravel, então a melhor opção é sim, utilizar ele diante do cenário.

Ambiente de desenvolvimento

Comentei logo no inicio do post, que apliquei alguns conceitos bônus na proposta para mostrar eficiência, que tal hehehe

Alguns desses conhecimentos foi algumas automatizações por parte do ambiente de desenvolvimento com **docker** e **docker-compose** para subir todo ambiente de maneira mais rápida e pratica alem de ficar muito massa!

Para quem sabe um pouco de docker fica mais fácil essas próximas etapas e para quem não sabe, já te deixo com a faca e o queijo na mão com esses post`s complementares que fiz aqui
Docker — 5 tópicos para iniciar o mais rápido possível
Docker — II — 5 tópicos para iniciar o mais rápido possível

PS: Não sou expert em docker, mas eu diria que sei me virar

Subindo containers

Agora vamos começar de fato a ver códigos por aqui e mexer no nosso projeto, certo?

Com seu docker rodando!

Aaah vou começar a usar prints das minhas pastas, então se em algum momento você notar algum arquivo a mais que eu não comentei, foi por isso e que ainda não chegamos na parte que eu falo do tal outro arquivo.

Criei um arquivo chamado *docker-compose.yml *com o seguinte conteúdo
https://gist.githubusercontent.com/henriqueweiand/bbcdfed9594ced7cc7107278443846fb/raw/e8b3ffff73bb575ff72600423fa8a651469d71c3/docker-compose.yml

Fiz a criação de três services, vulgo containers onde um é nosso banco de dados MySql, outro o Nginx e mais um que é nosso php, para alguns fiz a utilização de uma imagem "buildada" na hora, elas podem ser consultadas:
henriqueweiand/test-send4-lumen-crud

E sim, este link acima é o repositório do projeto finalizado ;)

Detalhando mais alguns pontos do docker-compose, fiz o mapeamento de algumas pastas com a option volumes assim como o mapeamento de portas e links entre as imagens e por ultimo e bem importante, a imagem do mysql coloquei duas opções para em envieonment que são

MYSQL_ROOT_PASSWORD: root

MYSQL_DATABASE: lumen
Enter fullscreen mode Exit fullscreen mode

Essas opções são importantes neste contexto da proposta pois assim ao subir o mysql a imagem automaticamente cria uma base de dados com o nome lumen, onde conseguimos posteriormente rodar as migrations assim como ter uma senha default para nosso .env

Não vou falar de tudo sobre o docker-compose.yml pois se não nosso post foge um pouco da ideia inicial, mas como já comentei acima, temos links complementares pare reforço dos conteúdos abordados

Colocando para rodar

Chega de bla…bla…bla e vamos mostrar nossa criação rodando, então na pasta do docker-compose.yml execute o seguinte comando

docker-compose up --build -d
Enter fullscreen mode Exit fullscreen mode

e temos o seguinte resultado

Não se assuste se demorar a rodar na sua maquina, pois aqui esta tudo meio que no cache já

Encerrando por hoje! Sim, falei de Laravel e lumen mas de fato não vimos nenhum código dele até então kkkk, mas não se preocupe que ainda vem alguns post`s na sequencia… Aqui trouxe mais uma intro sobre o que vamos ver e sobre o ambiente para o start tão esperado, certo?

Mas para quem quer ver o resultado final, pode ver o projeto na integra no repositório e rodar para ver que massa ficou
henriqueweiand/test-send4-lumen-crud

Até a próxima!

Next post
https://dev.to/henriqueweiand/lumen-instalando-atraves-do-docker-486c

Top comments (0)