🔸 Sobre 🔸 Motivação 🔸 Experimente
Aqui é possível cadastrar um novo produto, adicioná-lo ao carrinho e finalizar a compra via Mercado Pago
▫️ Projeto realizado com a finalidade de aprender a estruturar projetos com Laravel
▫️ Utilizar o conceito de container disponível através do Laravel Sail
▫️ E subsistemas Linux no Windows
1º Faça download do Docker 🐋, pois é ele o responsável por rodar toda a aplicação em um Container.
1º Faça download do WSL2, porque o projeto será armazenado neste Subsistema Linux.
2º Instale também esse respositório, através do botão Download Zip ou clonando na sua máquina. A pasta do projeto deve ficar dentro do subsistema, para que o projeto rode com maior eficiência através do Docker, o diretório será algo semelhante a este: \\wsl.localhost\Ubuntu\home\your_user\marketplace
3º Renomeie o arquivo .env.example para .env e certifique-se que as portas definidas no arquivo não estão sendo usadas pelo seu computador, caso contrário edite-o alterando as portas conforme necessidade. Também é necessário definir uma senha para o banco de dados no parâmetro DB_PASSWORD
4º Para que o container seja criado, antes, é necessário, baixar as dependências que não são enviadas para o GitHub com um container temporário através de um terminal WSL rodando no diretório da pasta luizdevfelipe@PC:~/marketplace$, digitando o comando:
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php83-composer:latest \
composer install --ignore-platform-reqs
5º Ainda no terminal WSL é preciso iniciar o container da aplicação para que seja possível configurá-la e utilizá-la futuramente, basta digitar:
./vendor/bin/sail up -d
6º Com o container da aplicação inicializado é necessário gerar uma chave de criptografia, que será exclusiva e utilizada para criptografar dados como valores de sessões, isso pode ser feito através do comando:
./vendor/bin/sail php artisan key:generate
7º Ao usar o comando Sail Up que é responsável por criar um container Docker da aplicação através do serviço Sail implementado pelo Laravel talvez as migrações do banco de dados ocorram imediatamente, entretanto é frequente a necessidade de migrar o banco manualmente. Caso necessário, basta executar o comando abaixo, que também pode ser executado em caso de dúvidas sem problemas:
./vendor/bin/sail artisan migrate
8º Agora, já com a estrutura da aplicação pronta é necessário criar um vínculo da pasta que armazena os arquivos enviados por usuários, majoritariamente imagens, com o sistema em geral para que esses possam ser carregados. Isso é feito através de um comando no container da aplicação executado pelo Sail:
./vendor/bin/sail artisan storage:link
9º Para finalizar, dois comandos precisam ser executados, um para instalar os pacotes provenientes do npm e outro para processar os arquivos estáticos da aplicação utilizando o asset bundle Vite:
./vendor/bin/sail npm install
./vendor/bin/sail npm run build
10º Tudo Certo! Basta acessar http://localhost:8001/ para que você possa visualizar o projeto em funcionamento. Dica: Ao se cadastrar, é necessário confirmar o e-mail, no caso dessa aplicação temos que acessar http://localhost:8025/ pois é onde o serviço de email está hospedado
Em casos de erro 500: Esse erro está muito relacionado ao arquivo mysql.sock.lock presente dentro do volume marketplace_sail-mysql que pode ser visto no aplicativo do Docker. Para solucionar o problema basta apagar esse arquivo e reiniciar o container para que um novo arquivo seja criado de maneira adequada. Em casos de dúvidas basta trocar o parâmetro APP_DEBUG=true para que mensagens de erros sejam exibidas.
- Laravel Schedule e API do Mercado Pago
- Para que a integração com API do mercado pago funcione é necessário preencher a chave MERCADO_PAGO_TOKEN= do arquivo .env com uma chave válida criada no site Mercado Pago Developers seguindo os passos descritos após criar uma conta.
- Nessa aplicação existem algumas tarefas agendadas através de comandos Artisan que são executados periodicamente pelo serviço Schedule do Laravel, como esse serviço é baseado em CRON, sendo necessário adicionar o comando abaixo dentro do arquivo crontab do seu WSL2 através de:
-
crontab -e
-
* * * * * cd /home/<user>/marketplace && ./vendor/bin/sail artisan schedule:run >> /dev/null 2>&1
-