Tutorial para la Creación de Microservicios con Docker y Docker Compose

Este tutorial te guiará a través de la creación de cuatro microservicios diferentes y cómo integrarlos usando Docker y Docker Compose.

Requisitos Previos

  • Docker instalado en tu sistema.
  • Docker Compose instalado en tu sistema.
  • Conocimientos básicos de Python y Docker.

Estructura del Proyecto

Organizaremos nuestro proyecto con la siguiente estructura:

|-- autenticacion/
|   |-- Dockerfile
|   |-- requirements.txt
|   |-- (otros archivos de código y configuración)
|
|-- busqueda/
|   |-- fastAPI/
|   |   |-- Dockerfile
|   |   |-- requirements.txt
|   |   |-- (otros archivos de código y configuración)
|
|-- cms_project/
|   |-- Dockerfile
|   |-- requirements.txt
|   |-- (otros archivos de código y configuración)
|   |-- db/
|
|-- gestion_post/
|   |-- Dockerfile
|   |-- requirements.txt
|   |-- (otros archivos de código y configuración)
|
|-- docker-compose.yml

Paso 1: Crear el Microservicio de Autenticación

Utilizar el siguiente repositorio de GitHub para clonar el código de ejemplo:

https://github.com/pacoquiroga/AutenticacionMicroservicio

Para clonar el repositorio, ejecuta el siguiente comando:

git clone https://github.com/pacoquiroga/AutenticacionMicroservicio.git

Paso 2: Crear el Microservicio de Búsqueda

Utilizar el siguiente repositorio de GitHub para clonar el código de ejemplo:

https://github.com/AvilesDanie/Microservicio-Busqueda

Para clonar el repositorio, ejecuta el siguiente comando:

git clone https://github.com/AvilesDanie/Microservicio-Busqueda.git

Paso 3: Microservicio de Comentarios

Utilizar el siguiente repositorio de GitHub para clonar el código de ejemplo:

https://github.com/esmora2/cms_project

Para clonar el repositorio, ejecuta el siguiente comando:

git clone https://github.com/esmora2/cms_project.git

Este microservicio continene la opcion de publicar post y comentarios.

Paso 4: Crear el Microservicio de Gestión de Post

Utilizar el siguiente repositorio de GitHub para clonar el código de ejemplo:

https://github.com/LeonardoYaranga/-Microservicio-de-Gesti-n-de-Posts-G4

Para clonar el repositorio, ejecuta el siguiente comando:

git clone https://github.com/LeonardoYaranga/-Microservicio-de-Gesti-n-de-Posts-G4.git

Paso 5: Crear el Archivo docker-compose.yml General

Crea un archivo docker-compose.yml en el directorio raíz del proyecto con el siguiente contenido:

services:
  # Servicio de Autenticación
  db_autenticacion:
    image: mysql:9.0.1
    container_name: AutenticacionDB
    environment:
      MYSQL_ROOT_PASSWORD: 12345
      MYSQL_DATABASE: AutenticacionDB
    ports:
      - "3306:3306"
    networks:
      - app-network

  autenticacion:
    build:
      context: ./autenticacion
    container_name: MicroservicioAutenticacion
    ports:
      - "8000:8000"
    networks:
      - app-network
    depends_on:
      - db_autenticacion

  # Servicio de Búsqueda
  busqueda:
    build:
      context: ./busqueda/fastAPI
    container_name: MicroservicioBusqueda
    ports:
      - "8001:8000"
    networks:
      - app-network

  # Servicio de CMS
  db_cms:
    image: nouchka/sqlite3
    container_name: CMSDB
    volumes:
      - ./cms_project/db:/data
    environment:
      - SQLITE_DATABASE=mydatabase.db
    networks:
      - app-network

  cms:
    build:
      context: ./cms_project
    container_name: MicroservicioCMS
    ports:
      - "8002:8000"
    networks:
      - app-network
    depends_on:
      - db_cms

  # Servicio de Gestión de Post
  gestion_post:
    build:
      context: ./gestion_post
    container_name: MicroservicioGestionPost
    ports:
      - "8003:8000"
    networks:
      - app-network
    environment:
      - DATABASE_URL=sqlite:///./test.db
    command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

networks:
  app-network:
    driver: bridge

Paso 6: Levantar los Microservicios

Navega al directorio raíz de tu proyecto y ejecuta el siguiente comando para construir y levantar todos los contenedores:

docker-compose up --build -d

Esto levantará cada microservicio en su propio contenedor y los hará accesibles en los siguientes puertos:

Ahora puedes acceder a cada microservicio en tu navegador y probar su funcionalidad.

Reto

Ajustar el archivo docker-compose.yml para que los microservicios funcionen correctamente, Si es necesario puedes adaptar los archivos Dockerfile y requirements.txt de cada microservicio.

Tambien puedes realizar las pruebas con herramientas como Postman, Thunder Client o Insomnia.

Recursos

Conclusión

Has aprendido cómo crear y conectar varios microservicios utilizando Docker y Docker Compose. Ahora puedes expandir este proyecto y agregar más microservicios según tus necesidades.