https://github.com/vhnegrisoli/filmes-webflux-api
API REST de um repositório de filmes utilizando Java 11, Spring Boot, Spring WebFlux, Spring Data MongoDB e banco NoSQL MongoDB
https://github.com/vhnegrisoli/filmes-webflux-api
docker docker-compose java11 mongodb reactive spring-boot spring-webflux
Last synced: 3 months ago
JSON representation
API REST de um repositório de filmes utilizando Java 11, Spring Boot, Spring WebFlux, Spring Data MongoDB e banco NoSQL MongoDB
- Host: GitHub
- URL: https://github.com/vhnegrisoli/filmes-webflux-api
- Owner: vhnegrisoli
- License: mit
- Created: 2020-11-17T19:03:30.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2020-11-19T18:22:33.000Z (over 4 years ago)
- Last Synced: 2025-01-10T15:49:16.118Z (5 months ago)
- Topics: docker, docker-compose, java11, mongodb, reactive, spring-boot, spring-webflux
- Language: Java
- Homepage:
- Size: 891 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Projeto: Filmes WebFlux API
### Resumo
O Filmes WebFlux API é um projeto de desenvolvimento de uma API REST
de um repositório de filmes utilizando Java 11, Spring Boot, Spring WebFlux, Spring Data MongoDB e banco NoSQL MongoDB.
### TecnologiasAs principais tecnologias utilizadas neste projeto são:
* **Java 11**
* **Spring Boot**
* **Spring WebFlux**
* **Spring Data MongoDB**
* **Reactive MongoDB Repositories**
* **MongoDB**
* **Docker**
* **Docker-compose**
* **API REST**
* **Gradle**## Instalação e execução
É possível executar a aplicação manualmente pela IDE ou terminal, ou também
via container Docker e até mesmo com docker-compose.#### Executando manualmente
Primeiramente, é necessário realizar a instalação das dependências, para isto, rode o comando:
`gradle build`
Em sequência, rode o comando:
`gradle bootRun`
Ou então:
`java -jar build/libs/.jar`
**Obs.: para rodar manualmente, é necessário ter uma instância do MongoDB
rodando sem autenticação (padrão definido nas configurações do projeto para fins de desenvolvimento)
ou rodar o container do MongoDB separadamente do arquivo compose, para isto, veja o comando abaixo.**#### Executando via Docker
Primeiramente, será necessário criar uma `network`, conforme o comando abaixo:
`docker network create filmes`
Depois, será necessário criar a imagem e rodar o container do MongoDB:
`docker run --network filmes --name filmes-db -p 27017:27017 -p 28017:28017 -e AUTH=no -d tutum/mongodb`
E, por fim, criar a imagem da API:
`docker image build -t filmes-api .`
Em sequência, rodar o container:
`docker container run --network filmes --name filmes-api -e SPRING_PROFILES_ACTIVE=docker -e MONGO_DB_HOST=filmes-db -e MONGO_DB_PORT=27017 -e MONGO_DB_DATABASE=webflux -p 8080:8080 -d filmes-api`
Para acompanhar os logs, basta executar o comando:
`docker logs --follow nome_do_container`
#### Executando via Docker-compose
Para executar todos os containers juntos, basta apenas rodar o comando:
`docker-compose up`
Caso queira ignorar os logs ao criar todos os containers, adicione flag `-d`.
Para parar os serviços inicializados pelo `compose`, basta rodar o comando:
`docker-compose stop`
## Disponibilização de acesso
A aplicação será dispinibilizada no endereço `http://localhost:8080`.
O banco de dados MongoDB estará disponbilizado no endereço `http://localhost:27017`.
### Deployment no Heroku
Foi feito um deploy em produção para a aplicação no Heroku e o banco de dados de produção utilizado com MongoDB foi
através do MongoDB Atlas.A aplicação está disponível no Heroku em: [https://filmes-webflux-api.herokuapp.com/](https://filmes-webflux-api.herokuapp.com/)
#### Documentação
Toda a documentação será feita através do Swagger, e poderá ser encontrada no endereço:
[http://localhost:8080/swagger-ui/](http://localhost:8080/swagger-ui/) (endereço local)
ou
[https://filmes-webflux-api.herokuapp.com/swagger-ui/](https://filmes-webflux-api.herokuapp.com/swagger-ui/)
Visão inicial da documentação da API:

Como a API é livre de autenticação, pode ser testada diretamente pela documentação executando local ou via Heroku.
## Autores
* **Victor Hugo Negrisoli** - *Desenvolvedor Back-End* - [vhnegrisoli](https://github.com/vhnegrisoli)
## Licença
Este projeto possui a licença do MIT. Veja mais em: [LICENSE](LICENSE)