Rodando o projeto manualmente
Pré-requisitos
Antes de iniciar, você precisa ter as seguintes ferramentas instaladas em sua máquina:
- Java JDK (versão 17 ou superior)
- Maven
- Node.js (versão 18 ou superior)
- Python (versão 3.12 ou superior)
- PostgreSQL
Nota
Siga o guia de instalação para sua máquina incluso nessa documentação: Windows, Ubuntu ou MacOS
Instalando o PostgreSQL
Windows
Via Chocolatey
- Abra o terminal como Administrador.
- Execute o seguinte comando:
choco install postgresql
Via MSI
- Acesse a página de downloads do PostgreSQL.
- Baixe o instalador MSI.
- Siga as instruções do assistente para concluir a instalação.
Linux
Via APT (Debian/Ubuntu)
- Abra o terminal.
- Atualize o índice de pacotes:
sudo apt update - Instale o PostgreSQL:
sudo apt install postgresql postgresql-contrib
macOS
Via Homebrew
- Abra o terminal.
- Instale o PostgreSQL usando Homebrew:
brew install postgresql - Inicie o serviço do PostgreSQL:
brew services start postgresql
Docker
- Abra o terminal bash (wsl no Windows)
- Rode o comando que executa o postgres
docker run -d --name pgfeedback -e POSTGRES_PASSWORD=root -e POSTGRES_DB=feedback -p 5432:5432 postgres - O comando serve apenas para a primeira vez que está rodando o container, nas vezes subsequentes usar o comando
docker start pgfeedback
No caso da instalação do postgre fora do ambiente docker, será necessário usar uma ferramenta de gerenciamento de banco como o dbeaver para configurar a base inicial do sistema feedback
Rodando o Projeto Manualmente
1. Configurar o Banco de Dados
Certifique-se de que o PostgreSQL esteja em execução. Você pode iniciar o serviço conforme as instruções acima, dependendo do seu sistema operacional.
2. Configurar Variáveis de Ambiente
Defina as seguintes variáveis de ambiente:
-
Linux e Mac OS
export DB_HOST=localhost export DB_PORT=5432 export DB_USER=postgres export DB_PASS=root export JWT_SECRET_KEY=4Z^XrroxR@dWxqf$!@#qGr4P export JWT_ISSUER=user-api export DATABASE_URL=postgresql://postgres:root@localhost:5432/feedback -
Windows
$env:DB_HOST="localhost" $env:DB_PORT="5432" $env:DB_USER="postgres" $env:DB_PASS="root" $env:JWT_SECRET_KEY="4Z^XrroxR@dWxqf$!@#qGr4P" $env:JWT_ISSUER="user-api" $env:DATABASE_URL="postgresql://postgres:root@localhost:5432/feedback"
3. Rodar os Microserviços Java
Acesse o diretório de cada microserviço, construa e inicie os serviços:
Entrar na pasta dos projetos JAVA
cd java_backend
Buildar os projetos
mvn clean install -DskipTests
mvn -pl microservices/usermanagement spring-boot:run
Rodar feedbackrequest
mvn -pl microservices/feedbackrequest spring-boot:run
Rodar feedbackresponse
mvn -pl microservices/feedbackresponse spring-boot:run
4. Rodar o Microserviço Python
Entrar na pasta do projeto
# Rodar feedbackresponseview
cd python_backend/feedbackresponseview
Instale as dependencias
poetry install
Rodando o projeto
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
5. Rodar o API Gateway (Node.js)
cd node_backend/api_gateway
npm install
npm run start
6. Rodar o Nginx
Ubuntu
-
Pré-requisitos
Certifique-se de que o Nginx esteja instalado no Ubuntu. Caso não esteja, instale-o com:
sudo apt update sudo apt install nginx -
Copiar o Arquivo de Configuração
Supondo que o arquivo de configuração local esteja em uma pastagatewaye se chamenginx.conf, copie-o para o diretório de configuração do Nginx:sudo cp gateway/nginx.conf /etc/nginx/sites-enabled/default -
Alterar a Configuração com sed
Se for necessário substituir valores (por exemplo, alterar o host paralocalhostem alguma linha de configuração), use:Explicação do comando:sudo sed -Ei 's/(server\s+)[^:]+(:[0-9]+;)/\1localhost\2/g' /etc/nginx/sites-enabled/default sed -Eiativa o modo de edição in-place com expressão regular estendida.-
O comando procura uma linha que contenha
serverseguido de algum espaço e em seguida qualquer valor até encontrar um número de porta (por exemplo,:80;) e substitui esse valor porlocalhostmantendo a porta. -
Reiniciar o Nginx
Após as alterações, reinicie o serviço para que as mudanças entrem em vigor:sudo service nginx restart
macOS
No macOS, há algumas considerações, principalmente no fato de que o sed pode ter diferenças (o macOS usa o BSD sed). Além disso, o Nginx pode ser instalado via Homebrew.
-
Instalar o Nginx
Utilize o Homebrew para instalar o Nginx (caso ainda não esteja instalado):O arquivo de configuração padrão do Nginx no macOS (via Homebrew) geralmente é encontrado embrew install nginx/usr/local/etc/nginx/nginx.conf. Se você estiver usando um arquivo de sites, pode ser necessário adaptar o caminho, por exemplo:/usr/local/etc/nginx/servers/default.conf -
Copiar o Arquivo de Configuração
Supondo que você deseja substituir o arquivo de configuração de um site:sudo cp gateway/nginx.conf /usr/local/etc/nginx/servers/default.conf -
Alterar a Configuração com sed
Devido às diferenças do BSD sed, a sintaxe pode precisar da flag-Ee uso de uma extensão de backup (por exemplo,.bak). Um exemplo:Esse comando cria um backup do arquivo original com a extensãosudo sed -i.bak -E 's/(server\s+)[^:]+(:[0-9]+;)/\1localhost\2/g' /usr/local/etc/nginx/servers/default.conf.bak. Se preferir, você pode remover esse backup posteriormente. -
Reiniciar o Nginx
Se o Nginx foi instalado via Homebrew, reinicie-o com:brew services restart nginx
Windows
No Windows, há duas abordagens que você pode adotar para executar essas tarefas:
Usando o Chocolatey
O Chocolatey é um gerenciador de pacotes para Windows. Você pode utilizá-lo para instalar o Nginx e executar scripts no PowerShell.
Passos:
-
Instalar o Nginx via Chocolatey
Abra o PowerShell com privilégios de administrador e execute:Geralmente, o Nginx instalado via Chocolatey ficará em:choco install nginx -y
C:\tools\nginx\conf\nginx.confou em um caminho similar. Verifique a documentação do pacote. -
Copiar o Arquivo de Configuração
Se o seu arquivo local estiver, por exemplo, emC:\projetos\gateway\nginx.conf, execute:Copy-Item -Path "C:\projetos\gateway\nginx.conf" -Destination "C:\tools\nginx\conf\nginx.conf" -Force -
Alterar a Configuração
Para alterar o arquivo usando uma ferramenta similar ao sed no Windows, você pode usar o PowerShell com expressões regulares. Por exemplo:(Get-Content "C:\tools\nginx\conf\nginx.conf") -replace '(server\s+)[^:]+(:[0-9]+;)', '$1localhost$2' | Set-Content "C:\tools\nginx\conf\nginx.conf" -
Reiniciar o Nginx
Depende de como o Nginx foi configurado para ser executado. Se ele estiver rodando como um serviço, reinicie-o. Se não, feche e inicie novamente usando o atalho ou script do próprio Nginx, por exemplo:# Supondo que você tenha um script para parar e iniciar: Stop-Process -Name nginx -Force Start-Process "C:\tools\nginx\nginx.exe"
WSL (Windows Subsystem for Linux)
Siga as instruções para o ubuntu
7. Acessar a Aplicação
A depender das portas aonde configurou os serviços, terá de acessar pelas portas escolhidas, cuidado ao rodar multiplas aplicações spring, elas podem cabar subindo na mesma porta, alterar o application property para mudar a porta desejada de cada uma