Configurando o ambiente de desenvolvimento - P2
Tags: rest, tutorial, configs
Published: 2022-09-11 00:05:22

Faala pessoal, tudo bom?

Dando continuidade ao meu primeiro post sobre [REST API's](https://dev.to/fllaviacorreia/um-projeto-rest-api-2pc9) , vim comentar um pouco sobre como configurei meu ambiente de desenvolvimento para fazer esse projeto.

## Sobre o projeto

A ideia é fazer um sistema simples de biblioteca, com CRUD de livros e usuários (leitores e administrador).

**As tabelas no banco são:**
Livro; Categoria; Editora; Escritor; Empréstimo; Reserva; Usuário; etc.

**Nossas regras de negócio:**
1. Livro possui autor, categoria, título, ano da publicação, quantidade de exemplares disponíveis, ele pode ser reservado, emprestado e devolvido.

2. O Leitor possui um usuário e ele pode visualizar os livros disponíveis, pode fazer uma reserva e empréstimo.

3. O administrador faz o gerenciamento dos empréstimos, das reservas e devoluções. Além disso ele também possui usuário.

Com essa ideia, criei esse modelo de banco de dados relacional no MySQL Workbenck:

![modelagem de banco de dados para biblioteca](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3k6o7domqudd9qzsdrk9.png)

**As tecnologias que irei utilizar**
1. Linguagem de programação: Java
2. JRE/JDK: 11 (estou utilizando o OpenJDK)
2. Framework: [Spring Tools Suite 4](https://spring.io/tools)
3. Banco de dados: MySQL
4. Servidor do DB e PHPMyAdmin: Docker (você pode utilizar o MyQSQL Server e MySQL Workbenck)
5. Realizar as requisições: Postman (você pode utilizar o Insomnia ou algum similar)

_Um adendo: eu utilizo o Linux, então recomendo que utilize o WSL para rodar o Docker, caso seu SO seja Windows ou utilize as opções que citei acima._

## Minhas configurações do Docker
No estágio que faço na Fábrica de Software (CPDS-UESB) utilizamos o Laravel para desenvolver sistemas web, e por precisar rodar o Apache, o servidor de DB e a interface para acessar o banco utilizamos o Docker. 

Os _containers_ foram configurados pelo [Gêneses Lopes](https://www.linkedin.com/in/geneses-lopes/), junto com o [Tulio Calil](https://www.linkedin.com/in/tuliocalil/) e [Reinaldo Bispo](https://www.linkedin.com/in/reinaldo-bispo/), eles deixaram tudo bonitinho, então como já tenho instalado na minha máquina preferi usá-lo.

O repositório do projeto você acessa [aqui](https://github.com/GenesesLopes/docker) com todas as infos de instalação e configuração.Faça alterações de portas no .env, eu fiz para o utilizar o PhpMyAdmin porque está configurado por padrão na porta 8080 e o Tomcat do Spring utiliza também a porta 8080, então modificando não terá conflito de portas.

* Os contêineres utilizados: phpmyadmin e mysql

**Para iniciar o Docker**

No terminal:
`sudo systemctl start docker`

**Para rodar os _containers_**
Normalmente, quando o Docker é iniciado o PHPMyAdmin e MySQL já estão rodando, caso não, no terminal insira o comando:
 
`docker container start mysql`

`docker container start phpmyadmin`

**Alternativa ao terminal**
Uma outra opção é utilizar a extensão do Docker no VS Code, lá é possível ver os _containers_ rodando, iniciá-los, pará-los, reiniciá-los, excluir as imagens, enfim.

**Para acessar o PhpMyAdmin** 
http://localhost:[suaporta] (a minha coloquei 9090)

- servidor: mysql;
- usuário e senha: root;


Bom, é isso. 
Qualquer dúvida ou sugestão, deixe nos comentários!

Fique na paz e até mais! :D