Gateway VekRest: centraliza acessos via Spring Boot com Docker e Maven.
10K+
Gateway VekRest: centraliza acessos via Spring Boot com Docker e Maven. Módulo 2 / Gateway
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 | Este Repositório |
| VekClient | Aplicação de CRUD de Pessoa | Repositório VekClient Módulo 1 |
| VekSecurity | Aplicação de Login e Segurança | Repositório VekSecurity Módulo 2.1 |
Este projeto depende das outras duas aplicações (VekClient e VekSecurity) para funcionar corretamente.
Faça o build no docker das outras aplicações ou utilize as imagens do DockerHub para rodar os containers necessários.
Por último, suba os containers deste projeto (VekGateway) para completar o ambiente.
A imagem desta aplicação é atualizada a cada nova tag ou pull request na branch main
Link da imagem no DockerHub: vek03/vekrest-vekgateway:latest
| Container | Imagem | Link |
|---|---|---|
| MongoDB | mongo:latest | https://hub.docker.com/_/mongo |
| Redis | redis:latest | https://hub.docker.com/_/redis |
| 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 |
| VekClient | vek03/vekrest-vekclient:latest | https://hub.docker.com/r/vek03/vekrest-vekclient |
| VekSecurity | vek03/vekrest-veksecurity:latest | https://hub.docker.com/r/vek03/vekrest-veksecurity |
| Variável | Descrição | Exemplo |
|---|---|---|
SERVER_PORT | Porta onde a aplicação irá rodar | 8080 |
SECRET_KEY | Chave do JWT | vekrest!Afwedfuihosedwfbgri8uoef |
VEKSECURITY_URI | URI do container de VekSecurity | http://veksecurity:8081 |
VEKCLIENT_URI | URI do container de VekClient | http://vekclient:8082 |
1️⃣ Para baixar a imagem do Docker Hub:
docker pull vek03/vekrest-vekgateway:latest
2️⃣ Para rodar o container localmente:
docker run -d \
--name vekgateway \
-e SERVER_PORT=8080 \
-e SECRET_KEY=vekrest!Afwedfuihosedwfbgri8uoef \
-e VEKSECURITY_URI=http://veksecurity:8081 \
-e VEKCLIENT_URI=http://vekclient:8082 \
-p 8080:8080 \
vek03/vekrest-vekgateway:latest
3️⃣ Alternativamente, você pode adicionar o serviço no seu docker-compose.yml local, descomentando ou adicionando o seguinte trecho:
services:
vekgateway:
image: vek03/vekrest-vekgateway:latest
hostname: vekgateway
container_name: vekgateway
ports:
- "8080:8080"
environment:
SERVER_PORT: 8080
SECRET_KEY: "vekrest!Afwedfuihosedwfbgri8uoef"
VEKSECURITY_URI: http://veksecurity:8081
VEKCLIENT_URI: http://vekclient:8082
depends_on:
mongodb:
condition: service_healthy
opensearch:
condition: service_healthy
graylog:
condition: service_started
redis:
condition: service_healthy
veksecurity:
condition: service_started
vekclient:
condition: service_started
healthcheck:
test: [ "CMD-SHELL", "curl -f http://localhost:8080/actuator/health || exit 1" ]
interval: 5s
timeout: 15s
retries: 10
start_period: 30s
4️⃣ 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-vekgateway-modulo2.git
# Acesse a pasta do projeto
cd vekrest-vekgateway-modulo2
# 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/vekgateway:latest .
# Descomente as últimas linhas do docker-compose.yml (relacionadas ao vekgateway) e rode:
docker-compose up -d
Ou execute o script .bat (executar_tudo.bat) na pasta .commands para automatizar o processo.
A API Gateway VekGateway fica disponível na porta 8080 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}
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 VekGateway Módulo 2 (rodando localmente)
Content type
Image
Digest
sha256:51379764f…
Size
208.6 MB
Last updated
9 months ago
docker pull vek03/vekrest-vekgateway