De GitHub a AWS ECS: Despliegue de Flask con Docker Hub

Guía de despliegue de una app Flask con CI/CD automatizado utilizando GitHub Actions, Docker Hub y AWS ECS. Incluye estructura, IAM y buenas prácticas de seguridad.

26 sept 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Desplegar aplicaciones de forma fluida es una habilidad clave en el panorama actual de ingeniería de software y DevOps. En este artículo explico cómo desplegar una aplicación Flask usando GitHub Actions, Docker Hub y AWS ECS, describo la estructura del repositorio y detallo los pasos para crear una canalización CI CD totalmente automatizada que publique actualizaciones directamente en ECS.

Sobre Q2BSTUDIO: Somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con experiencia en inteligencia artificial, ciberseguridad, servicios cloud aws y azure y soluciones de inteligencia de negocio. Si necesita un producto adaptado a sus necesidades visite desarrollo de aplicaciones y software multiplataforma o conozca nuestras ofertas de nube en servicios cloud AWS y Azure. Ofrecemos además integración de IA para empresas, agentes IA y soluciones con Power BI para inteligencia de negocio.

Resumen del flujo de trabajo a alto nivel: usted escribe y commitea el código en GitHub; GitHub Actions construye una imagen Docker y la publica en Docker Hub; a continuación se actualiza el servicio en AWS ECS para forzar un nuevo despliegue; ECS extrae la imagen desde Docker Hub y ejecuta la aplicación en la nube; finalmente su aplicación queda accesible vía URL o IP pública.

Requisitos previos: repositorio con la app Flask en GitHub; cuenta y repositorio en Docker Hub; cuenta AWS; conocimientos básicos de Docker; claves y secretos para GitHub Actions: DOCKERHUB_USERNAME, DOCKERHUB_TOKEN, AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY.

Permisos y roles en AWS: para que ECS pueda descargar imágenes y escribir logs en CloudWatch necesita dos permisos principales y un role de ejecución. En lugar de pegar las políticas en JSON aquí le recomiendo crear dos políticas en IAM mediante la consola: una que permita obtener token de ECR, comprobar capas y descargar imágenes, y otra que permita crear grupos y streams de logs y poner eventos de logs. Luego crea un role con una trust policy que permita a ecs-tasks.amazonaws.com asumir el role y adjunta las dos políticas previas. Nombre sugerido para el role: ECSExecutionRole. Estas acciones aseguran que las tareas puedan tirar de imágenes y registrar información para monitorización y depuración.

Conceptos clave de ECS: task definition es la plantilla que define la imagen, recursos, variables de entorno y puertos; una task es la instancia en ejecución; un service mantiene el número deseado de tareas; un cluster agrupa recursos y puede usar EC2 o Fargate. Recomendación práctica: utilizar Fargate para evitar gestionar infraestructura, seleccionar una familia de task definition coherente con el proyecto, asignar 1 vCPU y 2 GB de memoria si la app es ligera y asociar el role de ejecución creado.

Opciones de cómputo en el servicio ECS: puede usar la estrategia de capacity provider para combinar FARGATE y FARGATE_SPOT o elegir un launch type simple. Platform version puede quedar en LATEST salvo que necesite características concretas de versiones anteriores. Configure redes VPC y subnets, y habilite Container Insights para observabilidad avanzada con CloudWatch.

Estructura típica del repositorio: Dockerfile, docker-compose.yml, archivo cicd.yml para GitHub Actions y un archivo .env con variables de entorno. Describo a continuación lo esencial de cada uno sin reproducir fragmentos literales de configuración.

Dockerfile: base python 3.10 slim para ligereza; instalar dependencias del sistema necesarias, copiar requirements y ejecutar pip install sin cache; copiar el código de la aplicación; establecer variables de entorno para PYTHONPATH y la entrada de Flask; exponer el puerto 5000 y lanzar el servidor en 0.0.0.0 puerto 5000 para que sea accesible desde fuera del contenedor. Este diseño garantiza consistencia entre entornos y permite escalar con contenedores.

docker compose: define un servicio web que construye la imagen localmente, recoge variables sensibles desde .env, mapea el puerto 5000 del contenedor al host y monta el código para facilitar desarrollo. En producción no es necesario montar volúmenes pero el compose es útil para pruebas locales y conectividad entre servicios como bases de datos.

GitHub Actions workflow: un flujo clásico consta de dos jobs principales. Job build: chequea el código, construye la imagen Docker y hace login en Docker Hub usando secretos del repositorio para publicar la imagen. Job deploy: depende de build y configura credenciales AWS usando los secretos correspondientes, y ejecuta el comando AWS CLI para actualizar el servicio ECS y forzar un nuevo despliegue. Este patrón asegura despliegues automáticos al hacer push a la rama principal.

Variables y secretos: cree un archivo .env con DATABASE_URL, OPENAI_API_KEY, SECRET_KEY, POSTGRES_USER, POSTGRES_PASSWORD y POSTGRES_DB para pruebas locales. En GitHub configure secretos de Actions para DOCKERHUB_USERNAME, DOCKERHUB_TOKEN, AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY. Mantener secretos fuera del repositorio es fundamental para seguridad.

Comandos útiles: clonar el repositorio con git clone https://github.com/21toffy/docker-ecs-deployment-test.git y entrar en el directorio con cd docker-ecs-deployment-test. Para construir y etiquetar localmente use docker build -t nombre_imagen:tag . y para subir a Docker Hub use docker push nombre_imagen:tag. Para forzar un redeploy desde la CI use aws ecs update-service --cluster nombre_cluster --service nombre_servicio --force-new-deployment con las credenciales AWS configuradas en el runner.

Buenas prácticas de seguridad y operación: limite permisos en IAM al principio y aplique el principio de menor privilegio; rote las credenciales periódicamente; habilite CloudWatch y Container Insights para alertas; use variables de entorno y secretos gestionados por GitHub Actions o AWS Secrets Manager; para cargas sensibles considere el uso de repositorios privados en AWS ECR en lugar de Docker Hub.

Beneficios de esta canalización: centraliza el control de versiones en GitHub, empaqueta la aplicación con Docker para reproducibilidad, almacena imágenes en Docker Hub para despliegue continuo y automatiza el proceso con GitHub Actions reduciendo errores humanos y acelerando entregas. Es una base escalable compatible con IA para empresas, agentes IA y procesos de business intelligence con Power BI, que se integran fácilmente en pipelines de despliegue y monitorización.

Servicios complementarios y oferta de Q2BSTUDIO: si busca desarrollar soluciones más avanzadas a medida, integrar modelos de inteligencia artificial, proteger sus aplicaciones con estrategias de ciberseguridad o explotar datos con Power BI y servicios de inteligencia de negocio, en Q2BSTUDIO ofrecemos consultoría y desarrollo completo. Podemos ayudar a automatizar procesos, desplegar en AWS o Azure y diseñar arquitecturas seguras y escalables.

Conclusión: con una estructura clara de repositorio, roles y políticas IAM adecuadas, un workflow de GitHub Actions que construya y publique imágenes y una configuración correcta de ECS, puede disponer de un pipeline CI CD robusto para desplegar aplicaciones Flask en la nube de forma automática. Para proyectos a medida y soporte en todo el ciclo de vida del software, contacte con nosotros y aproveche nuestra experiencia en aplicaciones a medida, inteligencia artificial, ciberseguridad y servicios cloud.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat