Este documento fornece instruções para rodar o ambiente utilizando Docker Compose, contendo os serviços necessários para a aplicação Cadastro Agenda.
Antes de iniciar, certifique-se de ter instalado:
- Docker: Instalar Docker
- Docker Compose: Instalar Docker Compose
O arquivo compose.yml contém os seguintes serviços:
- Portainer - Interface de gerenciamento para Docker.
- PostgreSQL - Banco de dados PostgreSQL.
- Backend - API do sistema Cadastro Agenda.
- Frontend - Interface do usuário da aplicação Cadastro Agenda.
Para iniciar os serviços, execute o seguinte comando na raiz do projeto:
docker-compose up -dIsso iniciará todos os containers em segundo plano (-d = detached mode).
Use o comando abaixo para listar os containers ativos:
docker ps- Portainer: http://localhost:9000
- Backend: http://localhost:8080
- Frontend: http://localhost:4200
- Banco de Dados (PostgreSQL):
localhost:5432, usuário:postgres, senha:postgres, banco de dados:cadastro_agenda
Para parar os serviços e remover os containers, execute:
docker-compose downPara remover também os volumes persistentes:
docker-compose down -v- O serviço Portainer pode ser utilizado para monitorar os containers e volumes.
- O backend depende do banco de dados, e há uma verificação de saúde configurada para garantir que ele aguarde a inicialização do PostgreSQL antes de iniciar.
- O frontend está configurado para rodar na porta
4200, enquanto o backend na porta8080.
Se houver dúvidas ou problemas, consulte a documentação do Docker ou verifique os logs dos serviços com:
docker logs -f nome_do_containerDevido ao tempo que tive em meio a compromissos pessoais e prazo estabelecido, no meu ponto de vista, a aplicação poderia ter ou ter melhor os seguintes pontos (de inicio):
- Adicionado
HATEOAS,SpringDoceSwaggerna aplicacao; - Feito um sistema de login e roles, teria feito um contexto estatico com
ThreadLocalspara setar usuario e adicionado campos de auditoriacreated_byelast_modified_bynas tabelas e configurado oSlf4jpara logar este usuario em todos os logs; - Melhorado o sistema de validacoes e exception handling com uma excecao de negocio;
- Feito um "aplicador de filtros" mais abrangente e mais inteligente para aplicar os filtros que vem do frontend nas queries do
QueryDSL; - Mais testes, garantindo maior cobertura e testando as constraints que as entidades possuem a nivel de controlador e banco de dados, alem de testes de integracao;
- Adicionado uma entidade de propriedades, para possibilitar a configuracao dinamica dos precos e parametros das rotinas;
- Uma tabela e sistema de
lock semantico, junto a uma validacao para nao permitir cadastrar reservas dentro de um periodo ja ocupado para o mesmo quarto. - Balanceador de carga / api-gateway, para permitir multiplas instancias e entrega homogenea de requisicoes.