Este documento explica cómo levantar localmente los tres microservicios del proyecto Banco:
- banco-clientes (puerto 8080)
- banco-cuentas (puerto 8081)
- banco-movimientos (puerto 8082)
- Java 17+ (o la versión que use el proyecto)
- Maven 3.8+
- PostgreSQL 13+ en tu máquina (o instancia accesible)
psqldisponible en tu PATH- Puertos libres: 8080, 8081, 8082, 5432 (o el que uses para Postgres)
- Crea la base y esquemas requeridos en tu servidor Postgres local.
- Ejecuta el script
BaseDatos.sqlubicado en el repositorio (este archivo se encuentra en la raiz del repositorio).
Si tus servicios usan credenciales distintas, ajusta application.properties de cada módulo con tu JDBC/usuario/clave.
Plantilla JDBC (si aplica):
# Datasource
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/clientes
quarkus.hibernate-orm.database.default-schema=clientes
quarkus.datasource.username=postgres
quarkus.datasource.password=xxxxx# Datasource
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/cuentas
quarkus.hibernate-orm.database.default-schema=cuentas
quarkus.datasource.username=postgres
quarkus.datasource.password=xxxxxx# Datasource
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/movimientos
quarkus.hibernate-orm.database.default-schema=movimientos
quarkus.datasource.username=postgres
quarkus.datasource.password=xxxxxxEdita banco-cuentas/src/main/resources/application.properties para que apunte a localhost y comenta las URLs de servicio por nombre de contenedor:
# URL del microservicio clientes
quarkus.rest-client.cliente-api.url=http://localhost:8080
#quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false
quarkus.rest-client.movimientos-api.url=http://localhost:8082
#quarkus.rest-client.movimientos-api.url=http://banco-movimientos:8082
quarkus.rest-client.movimientos-api.exception-on-application-error=falseEdita banco-movimientos/src/main/resources/application.properties de forma similar:
# URL del microservicio clientes
quarkus.rest-client.cliente-api.url=http://localhost:8080
#quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false
# URL del microservicio cuentas
quarkus.rest-client.cuenta-api.url=http://localhost:8081
#quarkus.rest-client.cuenta-api.url=http://banco-cuentas:8081
quarkus.rest-client.cuenta-api.exception-on-application-error=falseImportante: En desarrollo usa siempre
localhostpara que los microservicios se encuentren entre sí sin depender de Docker/hostnames de red.
Este servicio suele ser independiente (no consume otros servicios). Asegúrate únicamente de que:
- Apunte a tu Postgres local.
- Exponga el puerto 8080.
Desde la raíz del proyecto (o cada módulo, si están separados):
mvn clean install -DskipTestsLevanta los módulos en este orden para evitar errores de dependencia:
- banco-clientes (8080)
- banco-cuentas (8081)
- banco-movimientos (8082)
Con Quarkus en modo dev:
# Terminal 1
cd banco-clientes
mvn quarkus:dev
# Terminal 2
cd banco-cuentas
mvn quarkus:dev
# Terminal 3
cd banco-movimientos
mvn quarkus:devSi prefieres ejecutar JARs:
mvn package -DskipTests java -jar target/*-runner.jar
Ajusta paths según tus endpoints reales.
# Salud / info
curl -i http://localhost:8080/q/health
curl -i http://localhost:8081/q/health
curl -i http://localhost:8082/q/health
# Ejemplos funcionales (simulados)
# Listar clientes
curl -s http://localhost:8080/clientes
# Listar cuentas (debería consultar clientes en 8080 y responder)
curl -s http://localhost:8081/cuentas
# Registrar movimiento (debería consultar cuentas 8081 y clientes 8080)
curl -s -X POST http://localhost:8082/movimientos -H "Content-Type: application/json" -d '{
"numeroCuenta": "1234567890",
"tipo": "DEPOSITO",
"monto": 100.00,
"descripcion": "Depósito de prueba"
}'- Base de datos (Postgres) lista y
script.sqlaplicado. - banco-clientes (depende solo de DB).
- banco-cuentas (consume clientes).
- banco-movimientos (consume clientes y cuentas).
- Timeouts entre servicios: verifica que en
application.propertiesestés usandohttp://localhost:puerto(no los hostnames tipobanco-xxx) y que el servicio destino ya está arriba. - Errores de DB (tabla/esquema no existe): confirma que ejecutaste
script.sqlen la misma base y que losschema/search_pathcorresponden. - Puerto ocupado: cambia el puerto de Quarkus con
quarkus.http.port=XXXXo libera el puerto ocupado. - Credenciales inválidas: revisa
quarkus.datasource.*en cada módulo y prueba conexión conpsql.
Esta sección explica cómo levantar los servicios en contenedores Docker. Aquí se usan los hostnames de servicio para que los microservicios se comuniquen entre sí dentro de la misma red de Docker.
Edita banco-cuentas/src/main/resources/application.properties para comentar localhost y usar los hostnames (banco-clientes, banco-movimientos):
# URL del microservicio clientes
#quarkus.rest-client.cliente-api.url=http://localhost:8080
quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false
# URL del microservicio movimientos
#quarkus.rest-client.movimientos-api.url=http://localhost:8082
quarkus.rest-client.movimientos-api.url=http://banco-movimientos:8082
quarkus.rest-client.movimientos-api.exception-on-application-error=falseEdita banco-movimientos/src/main/resources/application.properties de forma similar (usar banco-clientes y banco-cuentas):
# URL del microservicio clientes
#quarkus.rest-client.cliente-api.url=http://localhost:8080
quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false
# URL del microservicio cuentas
#quarkus.rest-client.cuenta-api.url=http://localhost:8081
quarkus.rest-client.cuenta-api.url=http://banco-cuentas:8081
quarkus.rest-client.cuenta-api.exception-on-application-error=falseNota: Los
Dockerfileya están dentro de cada proyecto (banco-clientes, banco-cuentas, banco-movimientos).
El archivo docker-compose.yml ya tiene configurado todo, incluyendo creacion de bdd y esquemas
Desde la raíz del repositorio:
# 1) Construir imágenes y levantar
docker compose up --build -d
# 2) Ver logs (opcional)
docker compose logs -f
# 3) Detener
docker compose downcurl -i http://localhost:8080/q/health # banco-clientes
curl -i http://localhost:8081/q/health # banco-cuentas
curl -i http://localhost:8082/q/health # banco-movimientosChecklist Docker:
- Propiedades ajustadas para hostnames (
banco-clientes,banco-cuentas,banco-movimientos). -
Dockerfilepresentes en cada módulo. -
docker-compose.ymlen la raíz del repo. - Base de datos lista y
db/init.sqlaplicado. - Puertos 8080/8081/8082 expuestos en el host si necesitas consumir desde fuera.