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:
- Búsqueda http://localhost:8001/docs
- CMS http://localhost:8002/api/
- Gestión de Post http://localhost:8003/docs
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.