Se você está buscando uma forma de instalar o Laravel na sua máquina local, sem precisar instalar PHP, Xampp (ou similares), nem Composer, você chegou no artigo certo!
Eu nunca gostei de instalar um ambiente de desenvolvimento completo diretamente na minha máquina, isso porque tenho projetos com versões de PHP diferentes, versão de Node diferentes, Python e por aí vai. Imagina o caos que seria ficar gerenciando isso tudo com instalações no meu computador local.
O que vou te mostrar nessa publicação é a instalação de um ambiente completo para rodar o Laravel 10 com PHP 8.1, mas instalando apenas o Docker na sua máquina.
Não vou entrar no mérito da instalação do Docker, mas deixo a documentação da ferramenta aqui para você baixar e instalar conforme a configuração da sua máquina local. Após realizar a instalação, siga os passos abaixo.
Nós temos outras publicações sobre Laravel aqui no blog. Dá uma conferida lá depois.
Neste publicação você vai aprender
Criando o docker-compose.yml
Crie uma nova pasta no seu computador, onde ficarão os arquivos do projeto. O primeiro arquivo que vamos criar nesta nova pasta é o docker-compose.yml.
O nosso arquivo docker compose terá a configuração do PHP, Nginx e Mysql e o Docker file da instalação do PHP vai instalar também o Composer para permitir o restante das configurações. Você vai encontrar esse arquivo no repositório do Github, aqui.
Crie o docker-compose.yml na raiz do seu projeto e observe também as configurações que deixei na pasta .docker nesse mesmo repositório. Todos os arquivos são importantes e estão referenciados dentro do docker-compose.yml.
Se preferir, clone esse repositório para sua máquina local com o comando git clone https://github.com/itgo-labs/laravel-docker.git
Subindo os containers Docker
Agora que os arquivos já estão dentro do seu computador e o Docker está instalado, execute o comando para subir os containers e aguarde as configurações do Docker.
> docker-compose up -d
Após a instalação das dependências e da finalização do lado do Docker, utilize o comando abaixo para ver os containers em execução.
> docker ps
-- Você vai ver algo parecido com isso:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
43aa5b9309b6 nginx:stable-alpine3.17 "/docker-entrypoint.…" 35 seconds ago Up 34 seconds 0.0.0.0:8002->80/tcp my_nginx
b74fd0bf8671 mysql:8 "docker-entrypoint.s…" 35 seconds ago Up 34 seconds 33060/tcp, 0.0.0.0:33006->3306/tcp my_mysql
418301e382d2 laravel-docker_my_app "docker-php-entrypoi…" 35 seconds ago Up 34 seconds 9000/tcp my_app
Observe que eu configurei no docker-compose.yml as portas 8002 para o Nginx e 33060 para o Mysql. Se essas portas estiverem em uso na sua máquina, modifique as configurações no arquivo para conseguir subir os containers.
Instalando o Laravel de dentro do Container
Como não temos PHP nem Composer instalado na máquina local, precisamos instalar de dentro do container, então executaremos as seguintes etapas: entrar no container my_app
e realizar as instalações. Veja os comandos abaixo:
-- Entrar no container
> docker exec -it my_app bash
-- Instalar o laravel
> composer create-project laravel/laravel
Após a instalação você vai perceber que o composer instalou o laravel dentro de outra pasta chamada laravel. Não tem como mudar isso, pois nosso projeto já possui arquivos na raiz. O que faremos agora é extrair os arquivos de dentro da pasta laravel criada pelo composer e jogar na raiz do projeto junto com os demais arquivos (sem medo mesmo).
Após a extração não existirá mais uma pasta laravel na raiz do projeto e o arquivo docker-compose estará no mesmo nível dos demais arquivos do laravel.
Acessando o projeto pelo navegador
Abra o navegador e acesse o endereço http://localhost:8002/
(lembre-se da porta se você alterou algo no arquivo docker-compose.yml) e você deve conseguir acessar a página do Laravel. Caso apareça um erro de permissão como este: The stream or file "/var/www/storage/logs/laravel.log" could not be opened
, execute os comandos abaixo:
-- Vamos acessar o container primeiro
> docker exec -it my_app bash
-- Agora execute estes comandos para atribuir acesso às pastas
> chown -R www-data storage
> chmod -R 775 storage
Atualize o seu navegador e pronto!
Conclusão
Se você gosta de deixar seu computador livre de versões de linguagens de programação e outras parafernalhas, provavelmente adorou essa abordagem.
Estou pensando em dar seguimento nesse projeto e criar mais algumas coisas, algum sistema simples utilizando vuejs, tailwindcss, vite etc. O ecossistema Laravel dá muito suporte para trabalhar com essas ferramentas e outras.
Deixe seu comentário aqui se quiser ver algo a mais com Laravel. Até a próxima o/