Skip to content

laboratorioMTM/spring-cloud-microservices-base

Repository files navigation

Spring Cloud Microservices - Doggie Inn

Este proyecto contiene una aplicación de microservicios desarrollada con Spring Cloud que gestiona un sistema de reservas para mascotas, compuesto por tres microservicios principales y un frontend en React.

Arquitectura del Sistema

  • ms01producto: Microservicio de gestión de productos (MongoDB)
  • ms02reserva: Microservicio de gestión de reservas (MySQL)
  • ms03stock: Microservicio de gestión de stock (MySQL)
  • frontend: Aplicación web React para la interfaz de usuario

Requisitos Previos

Antes de ejecutar la aplicación, asegúrate de tener instalado:

  • Java 11 o superior
  • Maven 3.6 o superior
  • Node.js 16 o superior
  • npm 8 o superior
  • Docker y Docker Compose

Instrucciones de Instalación y Ejecución

1. Levantar las Bases de Datos

Primero, es necesario iniciar las bases de datos usando Docker Compose:

# Desde el directorio raíz del proyecto
docker-compose up -d

Este comando iniciará:

  • MySQL en el puerto 3307 (para ms02reserva y ms03stock)
  • MongoDB en el puerto 27017 (para ms01producto)

Para verificar que los contenedores están ejecutándose:

docker-compose ps

2. Ejecutar los Microservicios

Cada microservicio debe ejecutarse en una terminal separada. Abre 3 terminales diferentes:

Terminal 1 - Microservicio de Productos (ms01producto)

cd ms01producto
mvn spring-boot:run

Terminal 2 - Microservicio de Reservas (ms02reserva)

cd ms02reserva
mvn spring-boot:run

Terminal 3 - Microservicio de Stock (ms03stock)

cd ms03stock
mvn spring-boot:run

3. Ejecutar el Frontend

En una cuarta terminal, ejecuta el frontend de React:

cd frontend
npm install  # Solo la primera vez
npm start

Puertos de los Servicios

Una vez que todos los servicios estén ejecutándose, estarán disponibles en los siguientes puertos:

Orden de Ejecución Recomendado

  1. Bases de datos (Docker Compose) - ¡OBLIGATORIO PRIMERO!
  2. Microservicios (en cualquier orden, pero todos antes del frontend)
  3. Frontend (último)

Comandos de Utilidad

Detener las bases de datos

docker-compose down

Detener las bases de datos y eliminar volúmenes

docker-compose down -v

Ver logs de las bases de datos

# Ver logs de MySQL
docker-compose logs mysql

# Ver logs de MongoDB
docker-compose logs mongo

Compilar todos los microservicios sin ejecutar

# Desde el directorio raíz
mvn clean compile

# O individualmente en cada microservicio
cd ms01producto && mvn clean compile
cd ms02reserva && mvn clean compile
cd ms03stock && mvn clean compile

Solución de Problemas

Error de conexión a base de datos

  • Verifica que Docker Compose esté ejecutándose: docker-compose ps
  • Asegúrate de que los puertos 3307 y 27017 no estén siendo usados por otros servicios

Error de puerto en uso

  • Si algún microservicio no puede iniciar por puerto ocupado, verifica los procesos en ejecución
  • Los puertos por defecto son: 8081, 8082, 8083, 3000

Problemas con npm

# Limpiar cache de npm
cd frontend
npm cache clean --force
rm -rf node_modules package-lock.json
npm install

Estructura del Proyecto

.
├── docker-compose.yml          # Configuración de bases de datos
├── pom.xml                     # POM agregador de Maven
├── frontend/                   # Aplicación React
│   ├── package.json
│   ├── src/
│   └── public/
├── infra/                      # Scripts de inicialización de BD
│   ├── mongo/
│   └── mysql/
├── ms01producto/               # Microservicio de Productos
├── ms02reserva/                # Microservicio de Reservas
└── ms03stock/                  # Microservicio de Stock

API Endpoints

Una vez que los servicios estén ejecutándose, los microservicios estarán disponibles en:

Puedes probar los endpoints usando herramientas como Postman, curl o desde el propio frontend.


¡Importante! Siempre ejecuta docker-compose up -d antes de iniciar cualquier microservicio, ya que estos dependen de las bases de datos para funcionar correctamente.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published