CONTENIDO
MODULO 1: FUNDAMENTOS DE DOCKER
• Conceptos básicos de docker: virtualización, runtime de docker, imágenes y contenedores.
• Conceptos avanzados de docker: aplicaciones multi-container, orquestadores decontenedores.
Laboratorio: ejecutar una aplicación de consola desde docker.
Ejecutar una aplicación web desde docker.
Crear un entorno web redundante con un balanceador + dos nodos deaplicación con docker-compose.
MODULO 2: FUNDAMENTOS DE DESARROLLO DE APLICACIONES CON CONTENEDORES
• Las fases del fases del ciclo de vida de la entrega de software: build, release y deploy.
• La metodología "12 factor app": qué características debe cumplir una aplicación paraser operada en un runtime de contenedores.
• Diferencias entre diferentes empaquetados (.exe, .dll, docker images).
Laboratorio: empaquetar una app .NET Core/Java en una imagen de docker escribiendo unDockerfile.
Laboratorio: ejecutar nuestra aplicación empaquetada creando un contenedor.
MODULO 3: DOCKERIZAR APLICACIONES .NET CON LA METODOLOGÍA 12 FACTOR APP
• Usar Kestrel/Spring Boot para conseguir una aplicación autocontenida que no necesitaun servidor de aplicaciones.
• Preparar una aplicación para que escriba los logs por la salida estándar.
• Preparar una aplicación para que reciba la configuración por variables de entorno.
• Refactorizar para delegar la gestión del estado de una aplicación a backing services(BBDD, Redis...)
• Preparar una aplicación para emplear gestión de dependencias (nugets en .NET/jars enJava) estilo 12 factor.
• Preparar una aplicación para respetar el modelo de procesos: inicio rápido, respuesta aseñales, graceful shutdown (en jobs y en web apis).
• Preparar una aplicación para un crash forzoso (timeout de colas, gestión detransacciones, etc.)
• Empaquetar librerías de sistema junto a la aplicación creando imágenes base personalizadas.
MODULO 4: ENTORNOS DE DESARROLLO Y TEST PARA APLICACIONES CON CONTENEDORES
• Usar TestContainers para crear un test harness donde ejecutar tests de integración autocontenidos contra infraestructura desechable.
• Generar un entorno de desarrollo local con docker-compose donde poder probar la aplicación sin dependencias.
• Preparar pruebas de caja negra sobre un entorno de docker-compose.
MODULO 5: DESPLIEGUE DE APLICACIONES DOCKER
• Entornos de orquestación de contenedores: docker-swarm.
• Entornos productivos de orquestación de contenedores: ECS.
• Práctica: desplegar un stack de docker-compose a un entorno local de Docker-Swarm.
• Laboratorio: publicar imágenes de docker en un docker registry (ECR).
• Laboratorio: usar Docker Hub/ECR para gestionar diferentes versiones/tags de una imagen.
• Laboratorio: desplegar una versión de una imagen de docker en un cluster de containers ya existente de ECS.
DESARROLLO SOBRE CONTENEDORES
Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de forma rápida, y con garantías, de un entorno informático a otro.
Una imagen de contenedor Docker es un paquete de software de poco peso, independiente y ejecutable que incluye todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones.