Este projeto o ajudará a montar um ambiente de desenvolvimento Laravel utilizando o Docker. O mesmo contém os principios básicos para produzir um projeto Laravel além de flexibilizar a criação de Modules e o padrão Service and Repositorie.
Para começar a utiliza-lo é necessário realizar um clone em sua máquina. Feito esse procedimento irá aparecer uma pasta com o nome laravel6-docker-repository/
. Entre dentro do diretorio backend cd laravel6-docker-repository/backend
e execute:
cp .env.example .env
Logo em seguida saia da pasta backend para poder levantar os containers cd ../
. Feito isso execute:
docker-compose up --build -d
Após executar este comando você estará subindo um ambiente de desenvolvimento com as seguintes ferramentas:
Ferramenta | Versão |
---|---|
PHP | ^7.2 |
Postgres | 11.7 |
Nginx | Alpine |
Quando certificar-se que todos os containers subiram corretamente, é necessário entrar dentro da máquina que o docker criou. Para realizar tal tarefa é preciso executar o seguinte comando:
docker-compose exec backend bash
Esse comando fará com que você entre dentro do ambiente de desenvolvimento criado, possibilitando-o ter acesso aos comandos que o composer irá disponibilizar. Como é um projeto novo, é requisito executar o comando abaixo para atualizar todas as dependências do projeto.
composer update
É necessário executar os comandos abaixo para poder ter acesso de leitura e escrita nos arquivos do projeto. Isso é obrigatório fazer, porque o docker por padrão irá procurar um usuário root dentro do container, então você acessa o container como root e executa os seguintes comandos.
chown -Rf 1000:1000 .
chown -Rf www-data:www-data storage/
O projeto já vem com o modulo de Auth implementado, basta configurá-lo seguindo as instruções abaixo:
- Migrar a estrutura de dados do passport
php artisan migrate
- Ao implantar o Passport nos servidores de produção pela primeira vez, você provavelmente precisará executar o comando
passport:keys
. Este comando gera as chaves de criptografia que o Passport precisa para gerar o token de acesso. As chaves geradas geralmente não são mantidas no controle de origem. OBS: para executar este comando você tem que acessar o container como root.
php artisan passport:keys
- Antes que seu aplicativo possa emitir tokens por meio da concessão de senha, você precisará criar um cliente de concessão de senha, para isso execute o seguinte comando.
php artisan passport:client --password
- Depois de criar um cliente de concessão de senha, você pode solicitar um token de acesso emitindo uma solicitação
POST
para a rotaoauth\token
com o endereço de e-mail e a senha do usuário e o provedor de autenticação. Lembre-se de que essa rota já está registrada pelo métodoPassport::routes
, não sendo necessário defini-la manualmente. Se o pedido for bem sucedida, você receberá um e na resposta JSON comaccess_token
erefresh_token
a partir do servidor
{
"username": <username>,
"password": <password>,
"grant_type" : "password",
"client_id": <client_id>,
"client_secret" : <cleint_secret>,
"scope": "",
"provider": <provider>
}
Para realizar o teste se o projeto realmente está rodando abra o browser e acesse: localhost:8080
Supondo que você está dentro da pasta backend, execute cd Modules/
isso o levará para o diretório de modulos e o habilitará a criar suas aplicações modulares. Para visualizar todos os comandos referentes aos modulos basta digitar
php artisan
Isso irá lhe mostrar a lista de comandos para se trabalhar utilizando modulos. Para criar seu primeiro modulo execute:
php artisan module:make NomeDoModulo
Entre dentre da pasta NomeDoModulo e poderá trabalhar como um projeto que pode ser facilmente integrado com outros modulos ou caso preferir pode trabalhar como um projeto a parte.
Para criar o padrão Service and Repository execute o seguinte comando:
Nota: É necessário estar no diretório app para executar os comandos do artisan
php artisan module:make-repository NomeRepository -s NomeModelo NomeDoModulo
Executando esse comando você irá criar um repositorio com base no modelo que você já tenha previamente criado dentro do modulo, e criará em seguida o serviço referente ao seu repositorio. Vale ressaltar que tanto o repository quanto o service podem ser criados de forma separada, os comando estão na lista que a figura acima mostra. Para visualizar os arquivos criados digite cd /Modules/NomeDoModulo
. Logo verá que foi criado um pasta chamada Repositories e outra Services.
Para realizar os prcodimentosé necessário ter o Docker e Docker Composer instalado em sua máquina.
Veja como uma pequena alteração no seu estilo de mensagem de confirmação pode torná-lo um programador melhor.
Formato: <type> (<scope>): <subject>
<scope>
é opcional
- Exemplo
feat: adicionar login para terceiros
^ -- ^----------------------------^
| |
| + -> Resumo no tempo presente.
|
+ -------> Tipo: chore, docs, feat, fix, refactor, style, or test
Mais exemplos:
feat
: (novo recurso para o usuário, não um novo recurso para o script de construção)fix
: (correção de bug para o usuário, não uma correção para um script de construção)docs
: (alterações na documentação)style
: (formatação, ponto e vírgula ausente, etc; sem alteração no código de produção)refactor
: (refatorando o código de produção, por exemplo, renomeando uma variável)test
: (adicionando testes ausentes, refatorando testes; nenhuma alteração no código de produção)chore
: (atualizando tarefas grunhidas, etc; nenhuma alteração no código de produção)
Este pacote o ajudará a entender as mudanças nos seus modelos Eloquent, fornecendo informações sobre possíveis discrepâncias e anomalias que possam indicar preocupações comerciais ou atividades suspeitas.
- Exemplo de Uso
- A configuração de um modelo para auditoria não poderia ser mais simples.
Basta usar a característica
OwenIt\Auditing\Auditable
no modelo que você deseja auditar e implementarOwenIt\Auditing\Contracts\Auditable
a interface.
- A configuração de um modelo para auditoria não poderia ser mais simples.
Basta usar a característica
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use OwenIt\Auditing\Contracts\Auditable;
class User extends Model implements Auditable
{
use \OwenIt\Auditing\Auditable;
// ...
}
Feito isso, toda alteração que acontecer nessa entidade será registrada em uma tabela nomeada de audits
na sua base de dados.
Este tutorial teve como principio descrever como colocar no ar um ambiente de desenvolvimento Laravel o mais rápido possivel, vale ressaltar que não foi esclarecido comandos, tecnologias ou afins porque não era o objetivo do mesmo.
Modulos : laravel-modules
Repositorios: repository-patern
Auditoria: laravel-auditing
Autenticação: auth-guards
Conventional Commits: Mensagens de confirmação semântica para git commit