Skip to content

Ejecutar con Docker

En este tutorial, aprenderemos cómo construir y ejecutar los microservicios de CodeDesignPlus utilizando Docker. Veremos cómo crear imágenes Docker para cada uno de los entry points del microservicio Clients (REST, gRPC y AsyncWorker) y cómo ejecutarlos en contenedores. Esto nos permitirá desplegar y gestionar los microservicios de manera eficiente y consistente.

¿Por qué Docker?

Docker es una plataforma de contenedores que permite empaquetar aplicaciones y sus dependencias en unidades portables llamadas contenedores. El uso de Docker ofrece numerosas ventajas en el desarrollo y despliegue de microservicios:

  • Portabilidad: Los contenedores se ejecutan de forma consistente en cualquier entorno que tenga Docker instalado, lo que evita problemas de incompatibilidad entre diferentes sistemas operativos y configuraciones.
  • Aislamiento: Los contenedores se ejecutan de forma aislada, evitando conflictos entre diferentes aplicaciones y sus dependencias.
  • Consistencia: Asegura que todos los desarrolladores y entornos de despliegue utilicen la misma versión del microservicio y sus dependencias.
  • Escalabilidad: Permite gestionar y escalar los microservicios de forma más fácil y eficiente.

¿Qué Aprenderás?

  1. Cómo crear imágenes Docker para los entry points REST, gRPC y AsyncWorker de un microservicio.
  2. Cómo ejecutar los microservicios en contenedores Docker.
  3. Cómo configurar las variables de entorno para los contenedores Docker.
  4. Cómo crear una red Docker para la comunicación entre los contenedores.

Requisitos Previos

Para seguir este tutorial, necesitarás tener instalado lo siguiente:

Configuración

Los microservicios de CodeDesignPlus hacen uso del archivo appsettings.Docker.json cuando la variable de entorno ASPNETCORE_ENVIRONMENT es establecida en Docker. En este archivo, se definen las configuraciones para la conexión a la base de datos, Redis, RabbitMQ, entre otros recursos de la infraestructura.

A continuación se muestra la configuración por defecto del archivo appsettings.Docker.json:

{
"Redis": {
"Instances": {
"Core": {
"ConnectionString": "host.docker.internal:6379"
}
}
},
"RabbitMQ": {
"Host": "host.docker.internal"
},
"Logger": {
"OTelEndpoint": "http://host.docker.internal:4317"
},
"Observability": {
"ServerOtel": "http://host.docker.internal:4317"
},
"Vault": {
"Address": "http://host.docker.internal:8200",
"Mongo": {
"TemplateConnectionString": "mongodb://{0}:{1}@host.docker.internal:27017"
}
}
}

Creación de Imágenes Docker

Para poder ejecutar los microservicios en contenedores, primero debemos crear las imágenes Docker. Cada entry point (REST, gRPC y AsyncWorker) tiene un archivo Dockerfile que describe cómo crear la imagen.

  1. Entorno Desarrollo: Asegúrate de que el entorno de desarrollo de CodeDesignPlus esté en ejecución.

    Docker Compose ps
  2. Crea la Imagen Docker para REST: Utiliza el siguiente comando para crear la imagen Docker del entry point REST.

    Terminal window
    docker build -t ms-clients-rest . -f src/entrypoints/Acme.Net.Microservice.Clients.Rest/Dockerfile
    Docker build REST
  3. Crea la Imagen Docker para gRPC: Utiliza el siguiente comando para crear la imagen Docker del entry point gRPC.

    Terminal window
    docker build -t ms-clients-grpc . -f src/entrypoints/Acme.Net.Microservice.Clients.gRpc/Dockerfile
    Docker build gRPC
  4. Crea la Imagen Docker para el Async Worker: Utiliza el siguiente comando para crear la imagen Docker del entry point AsyncWorker.

    Terminal window
    docker build -t ms-clients-worker . -f src/entrypoints/Acme.Net.Microservice.Clients.AsyncWorker/Dockerfile
    Docker build Worker

Ejecución de Contenedores Docker

Una vez que tenemos las imágenes Docker creadas, podemos ejecutar los microservicios en contenedores Docker.

  1. Ejecuta el Contenedor REST: Utiliza el siguiente comando para ejecutar el microservicio REST en un contenedor.

    Terminal window
    docker run -d -p 5000:5000 --network=backend -e ASPNETCORE_ENVIRONMENT=Docker --name ms-clients-rest ms-clients-rest
    Docker run REST
  2. Ejecuta el Contenedor gRPC: Utiliza el siguiente comando para ejecutar el microservicio gRPC en un contenedor.

    Terminal window
    docker run -d -p 5001:5001 --network=backend -e ASPNETCORE_ENVIRONMENT=Docker --name ms-clients-grpc ms-clients-grpc
    Docker run gRPC
  3. Ejecuta el Contenedor AsyncWorker: Utiliza el siguiente comando para ejecutar el microservicio AsyncWorker en un contenedor.

    Terminal window
    docker run -d -p 5002:5002 --network=backend -e ASPNETCORE_ENVIRONMENT=Docker --name ms-clients-worker ms-clients-worker
    Docker run Worker

Verificación de Contenedores

Una vez que los contenedores están en ejecución, podemos verificar que todo funciona correctamente.

  1. Lista los Contenedores: Utiliza el siguiente comando para listar los contenedores en ejecución o abrir Docker Desktop y seleccionar la pestaña Containers.

    Terminal window
    docker ps
    Docker ps

    Debes ver los contenedores ms-clients-rest, ms-clients-grpc y ms-clients-worker en la lista.

  2. Prueba las APIs: Utiliza Postman para probar las APIs REST y gRPC (como se describe en el artículo anterior) o realiza peticiones al microservicio en la dirección http://localhost:5000 para REST, http://localhost:5001 para gRPC y observa la salida en la consola del contenedor.

Conclusiones

En este tutorial, hemos aprendido cómo utilizar Docker para construir y ejecutar los microservicios de CodeDesignPlus. Hemos visto cómo crear imágenes Docker para cada entry point (REST, gRPC y AsyncWorker) del microservicio Clients, cómo ejecutarlos en contenedores, cómo configurar las variables de entorno y cómo crear una red Docker para la comunicación entre los contenedores.

Ahora, puedes desplegar tus microservicios de forma más fácil, consistente y portable en cualquier entorno que tenga Docker instalado.