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.
- 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
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
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
Cada microservicio debe ejecutarse en una terminal separada. Abre 3 terminales diferentes:
cd ms01producto
mvn spring-boot:run
cd ms02reserva
mvn spring-boot:run
cd ms03stock
mvn spring-boot:run
En una cuarta terminal, ejecuta el frontend de React:
cd frontend
npm install # Solo la primera vez
npm start
Una vez que todos los servicios estén ejecutándose, estarán disponibles en los siguientes puertos:
- Frontend: http://localhost:3000
- ms01producto: http://localhost:8081 (productos/MongoDB)
- ms02reserva: http://localhost:8082 (reservas/MySQL)
- ms03stock: http://localhost:8083 (stock/MySQL)
- MySQL: localhost:3307
- MongoDB: localhost:27017
- Bases de datos (Docker Compose) - ¡OBLIGATORIO PRIMERO!
- Microservicios (en cualquier orden, pero todos antes del frontend)
- Frontend (último)
docker-compose down
docker-compose down -v
# Ver logs de MySQL
docker-compose logs mysql
# Ver logs de MongoDB
docker-compose logs mongo
# 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
- 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
- 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
# Limpiar cache de npm
cd frontend
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
.
├── 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
Una vez que los servicios estén ejecutándose, los microservicios estarán disponibles en:
- ms01producto: http://localhost:8081 - Gestión de productos
- ms02reserva: http://localhost:8082 - Gestión de reservas
- ms03stock: http://localhost:8083 - Gestión de stock
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.