Esqueleto de proyecto para el laboratorio de SA
Report Bug
·
Request Feature
Contenidos
Este es el proyecto de laboratorio de la asignatura EPCSD de la UOC. Se compone de 3 elementos (cada una tiene su repositorio GIT):
- Un archivo docker-compose.yml para arrancar la infraestructura básica necesaria para poder ejecutar los servicios
- Una carpeta para el microservicio ProductCatalog (versión mejorada aquí)
- Una carpeta para el microservicio User (versión mejorada aquí)
- Una carpeta para el microservicio Notification (versión mejorada aquí)
Para el funcionamiento de los contenedores que forman parte de la infraestructura básica del proyecto, se usaran los siguientes puertos:
- 22181 - Apache Kafka (Zookeeper)
- 19092 - Apache Kafka (Server)
- 54320, 54321 - PostgreSQL
- 18080 - Adminer
- 18081 - Usado por el microservicio productcatalog
- 18082 - Usado por el microservicio user
Para evitar conflictos con otras aplicaciones instaladas, se han modificado los puertos por defecto de todas las aplicaciones. Aún así, si hubiera un conflicto por un puerto ya en uso, bastaría con modificar los puertos especificados en el archivo docker-compose.yml para solucionar el problema. Este link de la documentación oficial de docker compose explica como modificar esta configuración mediante la opción ports: Networking in Compose.
AVISO IMPORTANTE: Los puertos que se modifiquen se tendran que cambiar también en la configuración de los microservicios (normalmente definidos en el archivo application.properties).
Instalaremos Docker Compose siguiendo los pasos descritos (según SO) en la siguiente guía: https://docs.docker.com/compose/install/
Bajo Windows, es posible que sea necesario registrarse, ya que Docker Desktop lo exige así para proyectos educativos/personales/no-comerciales. Como contrapartida, no será necesario instalar nada más porque ya incorpora Compose.
Es importante que reviséis con atención los requisitos de hardware y software descritos en las guías de instalación, puesto que si vuestro sistema no los cumple, aunque la aplicación se instale satisfactoriamente, dará errores al intentar arrancar contenedores. Una alternativa para aquellos que tengan sistemas un poco más antiguos es Docker Toolbox.
Una vez instalado Docker Compose, seguiremos con el esqueleto de proyecto. Se recomienda seguir la siguiente estructura de carpetas:
epcsd-spring-2023
├ README.md
├ docker-compose.yml
├ epcsd-spring-2023-notification
├ epcsd-spring-2023-productcatalog
└ epcsd-spring-2023-user
-
Descargar ZIP / Clonar el repositorio epcsd-spring-2023 en la carpeta de trabajo (epcsd-spring-2023 si se ha seguido la recomendación).
-
Desde la carpeta, ejecutar el comando:
docker compose up (Win)
docker-compose up (Linux)
Deberían arrancarse los contenedores:
- epcsd-spring-2023-adminer_1 - adminer, un cliente SQL
- epcsd-spring-2023-kafka_1 - el servidor de kafka
- epcsd-spring-2023-productdb_1 - la bbdd postgresql correspondiente al servicio productcatalog
- epcsd-spring-2023-userdb_1 - la bbdd postgresql correspondiente al servicio user
- epcsd-spring-2023-zookeeper_1 - kafka zookeeper
Para verificar que se han levantado todos de manera correcta, ejecutaremos el siguiente comando:
docker ps -a
Deberíamos ver algo como esto:
Para comprobar el funcionamiento, se puede acceder al panel Adminer en http://localhost:18080/ y hacer alguna consulta contra las BBDDs PostgreSQL que acabamos de instanciar con los siguientes datos de conexión:
- productdb
- Motor: PostgreSQL
- Servidor: productdb
- Usuario: product
- Contraseña: product
- Esquema: product
- userdb
- Motor: PostgreSQL
- Servidor: userdb
- Usuario: user
- Contraseña: user
- Esquema: user
- Descargar ZIP / Clonar los repositorios epcsd-spring-2023-productcatalog, epcsd-spring-2023-user y epcsd-spring-2023-notification dentro de la carpeta de trabajo (epcsd-spring-2023 si se ha seguido la recomendación)
- Abrir los proyectos en el entorno de desarrollo preferido
- Verificar la correcta compilación y ejecución arrancando los proyectos y comprobando que se puede acceder a http://localhost:18081/swagger-ui/index.html y http://localhost:18082/swagger-ui/index.html
- Docker / Docker Compose
- Spring / Spring Boot
- Apache Kafka
- PostgreSQL
- Lombok
- springdoc-openapi-ui (SwaggerUI for OpenApi 3)
Vicenç Font - [email protected]