Criando um projeto Laravel com Docker de maneira "A jato" utilizando Laravel Sail
Tags: laravel, docker, ptbr, braziliandevs
Published: 2023-05-13 23:28:24

## Introdução

Todo desenvolvedor já perdeu algum tempo tentando configurar um ambiente local de desenvolvimento. É uma tarefa que pode ser bastante frustrante, com muitos erros e, no melhor dos cenários, ainda temos que lidar com problemas de incompatibilidade se estivermos trabalhando em uma equipe. No entanto, existe uma solução que se tornou popular nos últimos anos: o Docker.

O Docker é uma das melhores opções para montar um ambiente de desenvolvimento profissional, mas se você não usa Docker em seus projetos pessoais com Laravel, não se preocupe! Este artigo ensina como construir rapidamente e de maneira agradável um ambiente de desenvolvimento local com Laravel Sail.

## Laravel Sail


Segundo a própria [documentação oficial](https://laravel.com/docs/10.x/sail), o Laravel Sail é um CLI (Cliente de linha de comando) super leve para interagir com ambientes de desenvolvimento Laravel baseados em Docker.

O Sail fornece uma ferramenta acessível para funcionar como um ponto de partida na construção de um aplicativo Laravel, incluindo serviços co-dependentes comumente utilizados, como MySQL e Redis, por exemplo. Tudo isso sem precisar configurar um _Dockerfile_ ou um _docker-compose.yml_ diretamente, embora, é claro, você possa editar várias configurações posteriormente.

## Requisitos

Eu vou precisar que você tenha pelo menos o Docker e a ferramenta Curl instalados em seu computador. Você pode baixar o Docker pelo seu [site oficial](https://www.docker.com/get-started/). No caso do Curl, é provável que seu sistema operacional já possua essa ferramenta pré-instalada ou até mesmo instalada, principalmente se estivermos falando de um sistema Linux ou MacOS.

Você também precisará de um terminal para executar os comandos necessários. Seu computar, é claro já possui um, mas se você usa o Windows, recomendo instalar o Ubuntu como subsistema através do [WSL](https://learn.microsoft.com/pt-br/windows/wsl/install), o que é uma tarefa simples. Utilizaremos o terminal que ele nos fornece para executar as próximas ações.

**Em resumo, os requisitos necessários para prosseguirmos são:**
- Docker instalado
- Curl
- Terminal para executar comandos
- Se estiver no Windows, é recomendável instalar o Ubuntu como subsistema.

## Enfim chegou a hora do grande final!

Passando por toda esta jornada, se você chegou aqui, chegou a hora de juntar tudo que foi explicado (e instalado) e partir para construção do nosso projeto.
 
Dentro de uma pasta de projetos, você pode abrir seu terminal e executar o comando abaixo para criar um novo projeto, com a versão mais recente do Sail. Apenas vale lembrar que caso as portas necessárias estejam ocupadas será necessário mapeá-las. 

```
curl -s "https://laravel.build/project_name?with=mysql" | bash
```

Você deve substituir _project_name_ pelo nome do seu projeto. Podemos especificar mais serviços em _with_, mas por questões didáticas, não abordaremos isso neste artigo.


Aguardaremos o Sail usar o Docker para preparar o nosso ambiente. Na primeira execução, pode haver demora devido à velocidade de sua internet. O Docker nesse momento, pode precisar baixar imagens, caso não as tenha em cache, além de que ele irá criar e conectar os containers e seus serviços, além de executar outras tarefas no "backstage".

![Terminal com log do Sail/Docker](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c7soyaq1js429xowgryl.png)

Após a conclusão se não obtivemos nenhum erro em nosso console, podemos levantar nossos containers com o seguinte comando: 

```
cd project_name && ./vendor/bin/sail up 
```

E Voilá! Você está com seu ambiente construído com um container exclusivo para o seu Banco de Dados MySQL e outro para sua aplicação Laravel, com tudo organizado, portátil e de maneira profissional.

![Docker Desktop rodando os Containers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h0erelugjzpz501m04p6.png)

![Homepage de Boas-Vindas do Laravel](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6xy13tegn9b84wmnb6yj.png)

Chegamos ao fim deste artigo! Espero ter conseguido ajudá-lo de alguma forma e que você tenha compreendido e conseguido replicar em sua máquina local. Se você tiver alguma dúvida ou quiser conversar sobre o ecossistema Laravel, pode me enviar um e-mail em yuriferreiradeveloper@gmail.com. Além disso, se você quiser se conectar se comigo no [Linkedin](https://www.linkedin.com/in/yuri-ferreira-0b9384116/), ficarei feliz em trocar uma ideia com você por lá também!