VekSecurity: Segurança da aplicação com login de usuários via Spring Boot com Docker e Maven. Módulo 2.1 / Login
ATENÇÃO: VÁ ATÉ OS REPOSITÓRIOS DAS PARTES DO MÓDULO 2 E SIGA AS INSTRUÇÕES DE EXECUÇÃO DO README DE CADA APLICAÇÃO PARA RODAR A APLICAÇÃO COMPLETA!
| Aplicação | Descrição | Link |
|---|---|---|
| VekGateway | Gateway (este projeto) - Centraliza o acesso às outras aplicações | Repositório VekGateway |
| VekClient | Aplicação de CRUD de Pessoa | Repositório VekClient Módulo 1 |
| VekSecurity | Aplicação de Login e Segurança | Este Repositório |
Este projeto depende das outras duas aplicações (VekGateway e VekClient) para funcionar corretamente.
A imagem desta aplicação é atualizada a cada nova tag ou pull request na branch main
Link da imagem no DockerHub: vek03/vekrest-veksecurity:latest
| Container | Imagem | Link |
|---|---|---|
| MongoDB | mongo:latest |
https://hub.docker.com/_/mongo |
| OpenSearch | opensearchproject/opensearch:2.4.0 |
https://hub.docker.com/layers/opensearchproject/opensearch/2.4.0/images/sha256-c8681472b70d46e7de61fe770d288a972f84b3f122f3c74ca06ea525264b6fd5 |
| Graylog | graylog/graylog:5.1.5 |
https://hub.docker.com/layers/graylog/graylog/5.1.5/images/sha256-3b6967572e88731eacfa661e6d7ca41da3e259bc5eb041e58fb10e4deb823dcb |
| VekGateway | vek03/vekrest-vekgateway:latest |
https://hub.docker.com/r/vek03/vekrest-vekgateway |
| VekClient | vek03/vekrest-vekclient:latest |
https://hub.docker.com/r/vek03/vekrest-vekclient |
| Variável | Descrição | Exemplo |
|---|---|---|
SERVER_PORT |
Porta onde a aplicação irá rodar | 8081 |
SECRET_KEY |
Chave do JWT | vekrest!Afwedfuihosedwfbgri8uoef |
MONGODB_URI |
URI do MongoDB | mongodb://mongodb:27017/vekrest?serverSelectionTimeoutMs=15000&connectTimeoutMS=15000 |
GRAYLOG_HOST |
Endereço do Graylog | graylog |
GRAYLOG_PORT |
Porta do Graylog | 12201 |
1️⃣ Para baixar a imagem do Docker Hub:
docker pull vek03/vekrest-veksecurity:latest2️⃣ Para rodar o container localmente:
docker run -d \
--name veksecurity \
-e SERVER_PORT=8081 \
-e SECRET_KEY=vekrest!Afwedfuihosedwfbgri8uoef \
-e MONGODB_URI=mongodb://mongodb:27017/vekrest?serverSelectionTimeoutMs=15000&connectTimeoutMS=15000 \
-e GRAYLOG_HOST=graylog \
-e GRAYLOG_PORT=12201 \
-p 8081:8081 \
vek03/vekrest-veksecurity:latest3️⃣ Alternativamente, você pode adicionar o serviço no seu docker-compose.yml local, descomentando ou adicionando o seguinte trecho:
services:
veksecurity:
image: vek03/vekrest-veksecurity:latest
hostname: veksecurity
container_name: veksecurity
ports:
- "8081:8081"
environment:
SERVER_PORT: 8081
SECRET_KEY: "vekrest!A$9zLq#2vNf@eR6tYpWmZcXbGdQh"
MONGODB_URI: mongodb://mongodb:27017/vekrest?serverSelectionTimeoutMs=15000&connectTimeoutMS=15000
depends_on:
mongodb:
condition: service_healthy
opensearch:
condition: service_healthy
graylog:
condition: service_started
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8081/vekrest/veksecurity/actuator/health || exit 1"]
interval: 5s
timeout: 15s
retries: 10
start_period: 30s4️⃣ Depois de adicionar o serviço em docker-compose.yml, suba os containers:
docker-compose up -d# Clonar
git clone https://github.com/VekRest/vekrest-veksecurity-modulo2.1.git
# Acesse a pasta do projeto
cd vekrest-veksecurity-modulo2.12️⃣ Suba os containers necessários e Rode o projeto na sua IDE de preferência (ou via comando Maven)
# Suba os containers necessários (MongoDB, Redis, OpenSearch, Graylog)
docker-compose up -d
# Rode o projeto via Maven# Dentro da pasta do projeto:
mvn clean package -DskipTests
# Agora faça deploy no Docker local:
docker build -t vekrest/veksecurity:latest .
# Descomente as últimas linhas do docker-compose.yml (relacionadas ao veksecurity) e rode:
docker-compose up -dOu execute o script .bat (executar_tudo.bat) na pasta .commands para automatizar o processo.
A API Gateway VekGateway fica disponível na porta 8081 do Localhost ao rodar localmente via IDE.
# Após configurar o pom.xml com as informações do Sonar em Properties:
mvn clean install sonar:sonar -Dsonar.token={TOKEN_SONAR}- Spring Boot → Framework Back-End
- Java → Linguagem de programação
- Maven → Build
- Docker → Containers e virtualização
- Docker Hub → Repositório de imagens Docker
- OpenSearch e Graylog → Logs da Aplicação
- Swagger → Documentação da API
- SonarQube → Qualidade
- Github Actions → CI/CD automatizado
- .bat → Scripts para automatizar processos no Windows
Este projeto tem qualidade analisada pelo SonarQube Cloud. Verifique nos badges!
A esteira CI/CD deste projeto é automatizada via Github Actions. A cada tag criada a esteira é disparada.
# Exemplo: Cria a tag
git tag <version>
# Envia a tag para o repositório remoto
git push origin <version>Link para download da coleção Postman utilizada nos testes da API: Postman Collection VekRest
Alternativamente, você pode utilizar o Swagger UI para testar a API: Swagger UI VekRest VekSecurity Módulo 2.1 (rodando localmente)