Este proyecto es una práctica realizada como parte del Bootcamp de Henry, que consiste en la creación y despliegue de microservicios utilizando Docker Compose. Los microservicios incluidos en este proyecto son: Characters, Films, Planet y Database, aparte del Gateway. A continuación, se proporciona una breve descripción de cada uno de ellos:
El servicio de characters se encarga de gestionar la información de los personajes de un universo ficticio. Proporciona una API REST que permite realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sobre los personajes. Este microservicio está diseñado para ser escalable y permite acceder a información detallada de cada personaje.
El servicio de films administra la información relacionada con las películas de este universo ficticio. Ofrece una API REST que permite acceder a detalles de las películas, como el título, la fecha de lanzamiento y la sinopsis. Además permite realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sobre las películas, este servicio se integra con el servicio de characters para mostrar los personajes que aparecen en cada película.
El microservicio planets se encarga de gestionar la información de los planetas dentro del universo ficticio. Proporciona una API REST para acceder a detalles sobre los planetas, como su nombre, ubicación y características especiales. Además permite realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sobre los planetas, este servicio se integra con el servicio de characters para mostrar qué personajes están relacionados con cada planeta.
El servicio Database es esencial para el funcionamiento de los otros microservicios, ya que proporciona una base de datos centralizada donde se almacena toda la información. Utiliza una base de datos Dockerizada, como PostgreSQL o MySQL, para almacenar los datos de los personajes, películas y planetas. Los otros microservicios se conectan a esta base de datos para realizar operaciones de lectura y escritura.
El archivo docker-compose.yml en este repositorio define la configuración de Docker Compose para orquestar estos microservicios. Utiliza contenedores Docker para ejecutar cada microservicio de manera aislada, y establece conexiones entre ellos según sea necesario. Esto facilita la creación y el despliegue de todos los servicios en conjunto con una sola configuración.
Claro, aquí tienes los pasos a seguir para clonar el repositorio y ejecutar los microservicios utilizando Docker Compose:
-
Abre tu terminal o línea de comandos.
-
Navega a la ubicación donde deseas clonar el repositorio. Por ejemplo, puedes usar el siguiente comando para ir al directorio de tu elección:
cd /ruta/del/directorio -
Clona el repositorio desde GitHub usando el siguiente comando.
git clone https://github.com/kachamozo/StarWars-Microservice.git
-
Asegúrate de tener Docker y Docker Compose instalados en tu sistema. Puedes verificar la instalación de Docker ejecutando:
docker --version
Y puedes verificar la instalación de Docker Compose ejecutando:
docker-compose --version
Si no están instalados, sigue las instrucciones de instalación proporcionadas en la documentación oficial de Docker.
-
Una vez que tengas Docker y Docker Compose instalados, navega al directorio donde clonaste el repositorio:
cd StarWars-Microservice -
Ejecuta el siguiente comando para crear las imagenes docker de los microservicios utilizando Docker-Compose. Esto utilizará el archivo
docker-compose.ymlque se encuentra en el repositorio:docker-compose build
-
Ejecuta el siguiente comando para iniciar los microservicios utilizando Docker Compose. Esto utilizará el archivo
docker-compose.ymlque se encuentra en el repositorio:docker-compose up -d
El flag
-dpermite ejecutar los contenedores en segundo plano.
-
Una vez que los microservicios estén en funcionamiento, podrás acceder a ellos a través de las rutas definidas en cada microservicio. Por ejemplo:
- El servicio
characterspodría estar disponible enhttp://localhost:8000/characters. - El servicio
filmspodría estar disponible enhttp://localhost:8000/films. - El servicio
planetpodría estar disponible enhttp://localhost:8000/planet.
- El servicio
Characters (Personajes):
- GET /characters: Obtiene una lista de todos los personajes.
- GET /characters/{id}: Obtiene información sobre un personaje específico por su ID.
- POST /characters: Crea un nuevo personaje proporcionando los datos necesarios en un json.
{ "id": "200", "name": "Lord Dack", "height": "177", "mass": "84", "homeworld": "22", "films": ["1", "3"] } - PUT /characters/{id}: Actualiza la información sobre un personaje específico por su ID, y un json con los datos a actualizar.
- DELETE /characters/{id}: Elimina un personaje de la base de datos proporcionando su recpectivo ID.
Films (Películas):
- GET /films: Obtiene una lista de todas las películas de Star Wars.
- GET /films/{id}: Obtiene información sobre una película específica por su ID.
- POST /films: Crea una nueva película proporcionando los datos necesarios en un json.
{ "id": "200", "title": "Starwars la Guerra Final", "director": "Lord Smith", "producer": "Fox", "characters": ["1","2","3","4","5","10","18","20","80"], "planets": ["1", "3", "5", "9"] } - PUT /films/{id}: Actualiza la información sobre una película específica por su ID, y un json con los datos a actualizar.
- DELETE /films/{id}: Elimina un película de la base de datos proporcionando su recpectivo ID.
Planets (Planetas):
-
GET /planets: Obtiene una lista de todos los planetas de Star Wars.
-
GET /planets/{id}: Obtiene información sobre un planeta específico por su ID.
-
POST /planets: Crea un nuevo planeta proporcionando los datos necesarios en un json.
{ "id": "200", "name": "Ercolubus", "diameter": "9500", "climate": "temperate", "residents": ["19"], "films": ["1", "3", "5"] } -
PUT /planets/{id}: Actualiza la información sobre un planeta específico por su ID, y un json con los datos a actualizar.
-
DELETE /planets/{id}: Elimina un planeta de la base de datos proporcionando su recpectivo ID.
-
Desde su cliente RestAPI favorito (Postman, Insomnia, ThunderClient, etc.) hacer las consultas respectivas.
¡Eso es todo! Ahora deberías tener los microservicios en funcionamiento en tu máquina local. Asegúrate de que Docker Compose se esté ejecutando y de que los servicios se estén ejecutando correctamente. Puedes detener los servicios en cualquier momento ejecutando docker-compose down desde el directorio del repositorio clonado.
