Projeto criado para estudos contendo 7 microsserviços, sendo eles:
- hr-api-gateway-zuul
- hr-config-server
- hr-eureka-server
- hr-oauth
- hr-payroll
- hr-user
- hr-worker
Alguma das implementações/características:
- Java 8
- Spring Boot
- Feign para requisições de API entre microsserviços
- OAuth e JWT para autenticação e autorização
- Servidor Eureka para registro dos microsserviços
- API Gateway Zuul para roteamento e autorização
- Config Server - Servidor de configuração centralizada com dados em repositório Git
- Docker - Criação de Dockerfile para cada projeto
Alguns projetos utilizam profiles contendo características diferentes. O profile que será executado pode ser alterado dentro do application.properties de cada projeto. Os profiles de cada ambiente são acessados a partir do Config Server. Esses arquivos estão na banch master desse projeto com o nome: [nome-do-microsservico]-[profile].properties, sendo os profiles:
- test: Utiliza o banco de dadosem memória h2
- dev: Utiliza o banco de dados postgresql local
- prod: Utiliza o banco de dados postgresql com base no nome do container docker
Foi realizada a criação de uma rede docker chamada hr-net. Para criar a mesma, execute o seguinte comando:
docker network create hr-net
Configuração docker Postgresql
docker pull postgres:12-alpine
docker run -p 5432:5432 --name hr-worker-pg12 --network hr-net -e POSTGRES_PASSWORD=1234567 -e POSTGRES_DB=db_hr_worker postgres:12-alpine
docker run -p 5433:5432 --name hr-user-pg12 --network hr-net -e POSTGRES_PASSWORD=1234567 -e POSTGRES_DB=db_hr_user postgres:12-alpine
Cada microsserviço contém um Dockerfile com configurações diferentes. Para gerar um imagem docker, é necessário realizar a build do projeto e rodar o seguinte comando:
docker build -t [nome-do-microsservico]:v1 .
Para executar a imagem, rodar os seguintes comandos:
docker run -p 8888:8888 --name hr-config-server --network hr-net hr-config-server:v1
docker run -p 8761:8761 --name hr-eureka-server --network hr-net hr-eureka-server:v1
docker run -p 8765:8765 --name hr-api-gateway-zuul --network hr-net hr-api-gateway-zuul:v1
docker run -P --network hr-net hr-worker:v1
docker run -P --network hr-net hr-user:v1
docker run -P --network hr-net hr-payroll:v1
docker run -P --network hr-net hr-oauth:v1
Para o correto funcionamento das aplicações em docker, é necessário que os serviços(hr-config, hr-eureka e hr-api-gateway, além dos bancos de dados postgresql) rodem nas portas especificadas, pois estão configuradas as mesmas portas dentro da aplicação.