microservicios-spring
README.md

Luis Fornaris y Jose Narvaez

🛠️ Configuración del Proyecto con Docker

Este proyecto utiliza Docker y Docker Compose para gestionar los microservicios y sus bases de datos.

📌 Requisitos Previos

Antes de comenzar, asegúrate de tener instalado en tu sistema:

🚀 Pasos para Configurar y Ejecutar el Proyecto

NO EJECUTAR EL SERVICIO REDIS, sigue en desarrollo para mostrar caché

🔴 Error de conexión a la base de datos

1️⃣ Clonar el Repositorio

# Clonar el repositorio desde GitHub
git clone https://github.com/JosCariDe/spring-microservices.git

# Ir al directorio del proyecto
cd spring-microservices

2️⃣ Levantar los Contenedores con Docker Compose

# Apagar cualquier instancia previa (opcional, por si acaso)
docker-compose down

# Construir y levantar los servicios en segundo plano
docker-compose up --build -d

📌 Nota: El flag --build se usa para asegurarse de que se reconstruyan las imágenes con los cambios más recientes.

3️⃣ Verificar que los Contenedores están Corriendo

docker ps

Si todo está bien, deberías ver los contenedores ejecutándose.

4️⃣ Ver los Logs de los Servicios

Si hay problemas, revisa los logs de los contenedores con:

# Ver logs de todos los servicios
docker-compose logs -f

# Ver logs de un servicio específico (ejemplo: order-service)
docker-compose logs -f order-service

5️⃣ Acceder a las Aplicaciones

Cada microservicio se ejecuta en un puerto diferente. Asegúrate de que los puertos especificados en docker-compose.yml estén disponibles en tu máquina.

🌐 Configuración del API Gateway

server:
  port: 4040

spring:
  application:
    name: api-gateway

  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
      routes:
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/api/orders/**
          filters:
            - StripPrefix=2
            - RedisCacheResponseFilter=30s
        - id: inventory-service
          uri: lb://inventory-service
          predicates:
            - Path=/api/inventory/**
          filters:
            - StripPrefix=2
            - RedisCacheResponseFilter=30s
        - id: product-service
          uri: lb://product-service
          predicates:
            - Path=/api/products/**
          filters:
            - StripPrefix=2
            - RedisCacheResponseFilter=30s
        - id: payment-service
          uri: lb://payment-service
          predicates:
            - Path=/api/payments/**
          filters:
            - StripPrefix=2
            - RedisCacheResponseFilter=30s

6️⃣ Detener los Contenedores

Para detener los contenedores sin eliminarlos:

docker-compose stop

Para detener y eliminar los contenedores, redes y volúmenes:

docker-compose down -v

Problemas Comunes y Soluciones

🔴 Docker no puede asignar puertos

Si algún servicio falla porque el puerto ya está en uso, verifica qué procesos lo están ocupando:

sudo lsof -i :8080  # Reemplaza 8080 por el puerto que necesites verificar

Para liberar el puerto:

sudo kill -9 <PID>

🔴 Error de conexión a la base de datos

Si un servicio no puede conectarse a su base de datos, revisa:

  • Que los contenedores de la base de datos están corriendo (docker ps)
  • Que las credenciales en docker-compose.yml son correctas
  • Intenta reiniciar los servicios con:
    docker-compose down -v && docker-compose up --build -d