https://github.com/evertonsavio/spring-cloud-microservices
Java Spring Boot Microservices - (Netflix Stack). Config Server, Discovery Server, Zuul Gateway, Resource Server, Rabbitmq e Node.js eureka client.
https://github.com/evertonsavio/spring-cloud-microservices
Last synced: about 1 month ago
JSON representation
Java Spring Boot Microservices - (Netflix Stack). Config Server, Discovery Server, Zuul Gateway, Resource Server, Rabbitmq e Node.js eureka client.
- Host: GitHub
- URL: https://github.com/evertonsavio/spring-cloud-microservices
- Owner: evertonsavio
- Created: 2020-10-04T13:47:37.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-11-15T18:41:57.000Z (over 5 years ago)
- Last Synced: 2025-01-02T12:13:03.803Z (over 1 year ago)
- Language: Java
- Homepage:
- Size: 723 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JAVA Spring Cloud Microservices (NETFLIX Stack)
* Adicionar a anotacao @EnableEurekaServer na classe principal.
*Adicionar em resources/application.properties:
```
server.port=8010
spring.application.name=discoveryservice
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone = "http://localhost:8010/eureka"
```
--------------
### Criar Users Microservice
* @EnableDiscoveryClient na classe principal e em application.properties:
```
server.port=0
spring.application.name=users-ws
eureka.client.serviceUrl.defaultZone = http://localhost:8010/eureka
spring.devtools.restart.enabled = true
```
### ERROR: RabbitMQ started but can't access management interface
* Solution: rabbitmq-plugins enable rabbitmq_management
### mappingModel List
* https://www.baeldung.com/java-modelmapper-lists
### AWS
* Gerar chave, baixar. No diretorio da chave executar:
```
chmod 400 mykey.pem
ssh -i "aws-microservices-keypair.pem" ec2-user@ec2-18-230-82-253.sa-east-1.compute.amazonaws.com
sudo yum update
```
### Docker Commands Cheat Sheet
* http://appsdeveloperblog.com/docker-commands-cheat-sheet/
* Install Docker on AWS EC2
```
sudo yum install docker
sudo service docker start
sudo usermod -a -G docker ec2-user
exit
ssh -i "aws-microservices-keypair.pem" ec2-user@ec2-18-230-82-253.sa-east-1.compute.amazonaws.com
docker info
```
* Run RabbitMQ Docker Container
```
docker run -d --name rabbit-name-management -p 15672:15672 -p 5672:5672 -p 15671:15671 -p 5671:5671 -p 4369:4369 rabbitmq:3-management
```
#### -d Enable to close terminar and rabbiq continue running
```
docker ps
docker stop CONTAINER ID
docker ps --all
docker start CONTAINER
```
* Configurar as PORTAS no grupo de segurança da AWS as regras de entrada:
```
Tipo: TCP personalizado
Protocolo: TCP
Intervalo de portas: e.g portas do rabbitmq
Origem: Qualuquer lugar
```
* Conectar ao RabbitMQ: Endereco publico mais a porta 15672
```
http://ec2-18-230-82-253.sa-east-1.compute.amazonaws.com:15672/
```
### DOCKER FAST COMMANDS
```
docker ps
docker ps -a
docker run -d --name different_name -> CREATE CONTAINNER
docker stop CONTAINER_ID
docker start CONTAINER_ID -> INICIALIZA O CONTAINNER
docker rm CONTAINER ID -> STILL HAS IMAGES
docker images
docker rmi IMAGE_ID -f
docker inspect CONTAINER_ID -> e.g: To see IP address
docker logs CONTAINER_ID
```
* To run RabbitMQ and change Default user name and password:
```
docker run -d --name rabbit-name-management -p 15672:15672 -p 5672:5672 -p 5671:5671 -e RABBITMQ_DEFAULT_USER=user –e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management
```
### Preparando a DOCKERFILE ./mvnw do spring boot
```
./mvnw clean
./mvnw package
```
* cd target -> Voce encontrará as .jar files dispoíveis.
```
docker build --tag=config-server --force-rm=true .
obs-1: Se atentar e não esquecer o ponto no final do comando.
obs-2: dockerfile escrito em minusculo gera erro.
docker login --username=havyx
docker tag IMAGE_ID havyx/Docker_Hub_REPOSITORY_Name
docker push havyx/Docker_Hub_Repository_Name
```
### Run Config Server Docker Container (Criar dockerfile antes of course)
```
docker run -d -p 8012:8012 -e "spring.rabbitmq.host=172.17.0.2" havyx/config-server
```
* Configurar porta 8012 na AWS para outros microservicos comunicarem com ela.
* Run Eureka Docker Container
```
docker run -d -p 8010:8010 -e "spring.cloud.config.uri=http://172.31.0.133:8012" havyx/sk-eureka-server
```
* Run Zuul API Gateway Docker Container
```
docker run -d -e "spring.cloud.config.uri=http://99.79.172.54:8012" -e "spring.rabbitmq.host=99.79.172.54" -p 8011:8011 havyx/sk-zuul-api-gateway
```
* Run Elasticsearch Docker Container
```
docker run -d --name elasticsearch --network api_network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.3.0
```
* Run Kibana Docker Container
```
docker run -d --network api-network -p 5601:5601 kibana:7.3.0
```
* Run Albums Microservice Docker Container
```
docker run -it -d -e "eureka.client.serviceUrl.defaultZone=http://test:test@99.79.99.76:8010/eureka" --network host -e "logging.file=/api-logs/albums-ws.log" -v /home/ec2-user/api-logs:/api-logs havyx/albums-microservice
```
* Run Logstash for Albums Microservice Docker Container
```
docker run -d --name logstash /home/ec2-user/api-logs:/api-logs havyx/sk-albums-microservice-logstash
```
* Run MySQL Docker Container
```
docker run –d -p 3306:3306 --name mysql-docker-container -e MYSQL_ROOT_PASSWORD=sergey -e MYSQL_DATABASE=photo_app -e MYSQL_USER=sergey -e MYSQL_PASSWORD=sergey mysql:latest
```
* Run Users Microservice Docker Container
```
docker run -d -e "spring.cloud.config.uri=http://172.31.4.43:8012" -e "spring.rabbitmq.host=172.31.4.43" -e "eureka.client.serviceUrl.defaultZone=http://test:test@172.31.18.99:8010/eureka" -e "spring.datasource.url=jdbc:mysql://172.31.13.167:3306/photo_app?serverTimezone=UTC" --network host -e "logging.file=/api-logs/users-ws.log" -v /home/ec2-user/api-logs:/api-logs havyx/sk-users-microservice
```
* Run Logstash for Users Microservice
```
docker run -d --name users-ws-logstash /home/ec2-user/home:/api-logs havyx/sk-users-ws-logstash
```