De roto a robusto: Django en Docker con ECR SSH migraciones ausentes

Guía completa para depurar despliegues de Django en contenedores: migraciones faltantes, SSH con GitHub, ECR, dependencias y CI/CD para producción.

7 sept 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Guía completa para depurar y resolver problemas comunes de despliegue de Django en entornos con contenedores

TLDR

Invertí 6 horas depurando un backend de Django roto en producción. Los problemas incluyeron migraciones faltantes, autenticación SSH fallida, desajustes de tipo en la base de datos, dependencias ausentes y una imagen antigua en ECR. Aquí documento la solución de punta a punta con los comandos clave que utilicé.

Escenario desastre

Te asignan arreglar un backend que no arranca. En los logs, Django marca un error de migraciones que hacen referencia a un nodo padre inexistente en otra app. Clásico caso de migraciones no versionadas.

Fase de diagnóstico

Comandos iniciales: docker-compose logs backend, python manage.py showmigrations. Resultado típico: dependencia en una app sin migraciones y directorio de migrations con solo init.py.

Problema 1 Migraciones de Django faltantes

Hallazgos: la app accounts tenía modelos complejos sin archivos de migración. Causa raíz frecuente cuando las migraciones no se comitean al repositorio.

Solución correcta

1 Generar las migraciones en local o entorno de desarrollo. 2 Comitearlas y subirlas a control de versiones. 3 Desplegar mediante la canalización CI CD oficial.

Práctica recomendada

Usa python manage.py showmigrations para revisar dependencias y el orden aplicado antes de migrar. Ejecuta docker-compose exec backend python manage.py migrate en el entorno de despliegue solo con migraciones ya versionadas.

Problema 2 Autenticación SSH con GitHub

El remoto estaba en HTTPS y GitHub eliminó la autenticación por contraseña hace tiempo. Además, el host no estaba en known_hosts.

Pasos para reparar SSH

1 Revisar claves existentes: ls -la ~/.ssh. 2 Añadir GitHub a known_hosts con ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts. 3 Probar la conexión: ssh -T git@github.com. 4 Cambiar el remoto a SSH: git remote set-url origin git@github.com:usuario/repositorio.git y validar con git remote -v.

Comandos de depuración SSH útiles

ssh -vT git@github.com para salida detallada. ssh-keygen -lf ~/.ssh/id_rsa.pub para verificar la huella de la clave.

Problema 3 La cápsula del tiempo de ECR

En ECR había una imagen antigua sin las correcciones. docker-compose estaba tirando de la etiqueta latest, que apuntaba a una build vieja. Recuerda que las imágenes son inmutables y una etiqueta puede seguir atada a una imagen desactualizada.

Estrategia de corrección ECR

Paso 1 Validación local temporal: cambiar a build local en docker-compose, ejecutar docker-compose down y docker-compose up --build -d para comprobar que el backend funciona con las correcciones.

Paso 2 Actualizar ECR: iniciar sesión con aws ecr get-login-password --region region | docker login --username AWS --password-stdin registro. Etiquetar la imagen local con docker tag imagen-local:latest registro/repositorio:latest. Empujar con docker push registro/repositorio:latest.

Paso 3 Volver a imagen de ECR: restaurar la configuración de docker-compose a image registro repositorio latest y subir con docker-compose up -d.

Problema 4 Dependencias ausentes

Error típico: Django marcando que el paquete cryptography es requerido para sha256_password o caching_sha2_password cuando usas MySQL 8.x. Por defecto MySQL 8 usa caching_sha2_password y el conector de Python necesita cryptography.

Opciones de solución

Opción recomendada: añadir cryptography en requirements.txt, por ejemplo cryptography mayor o igual a 3.4.8. Alternativa temporal: iniciar MySQL con el plugin mysql_native_password usando command --default-authentication-plugin=mysql_native_password en el servicio de la base de datos de docker-compose.

Implementación final de la solución

Estructura clave de docker-compose: servicio db con imagen mysql 8.1, healthcheck activado, variables de entorno para base de datos y el plugin de autenticación ajustado si es necesario. Servicio backend con image del ECR actualizada, restart always, mapeo de puerto 8000, depends_on con condición service_healthy y variables de entorno DATABASE_HOST db y DATABASE_PORT 3306.

Verificación

Comprobar contenedores: docker-compose ps. Probar endpoint del backend: curl -s https://localhost:8000/admin/login. Revisar logs: docker-compose logs backend --tail=20.

Resultados

Antes: el backend caía al iniciar, faltaban migraciones, fallaba la autenticación SSH, ECR servía una imagen obsoleta y había problemas de conexión a la base de datos. Después: backend estable, migraciones aplicadas, SSH funcionando, ECR actualizado y conexiones de base de datos estables.

Aprendizajes clave

1 Gestión de migraciones: siempre versiona las migraciones. 2 Autenticación SSH: usa SSH frente a HTTPS cuando sea posible y cuida known_hosts. 3 Inmutabilidad de contenedores: ECR no se actualiza solo, debes construir y empujar nuevas imágenes. 4 Dependencias: mantén requirements.txt al día, especialmente con cambios de motor o método de autenticación. 5 Estrategia de depuración por capas: base de datos, aplicación, contenedor, registro, pipeline.

Referencia esencial de comandos

Docker y ECR: docker-compose down, docker-compose up -d, docker-compose ps, docker-compose logs servicio, aws ecr get-login-password --region region, docker login, docker tag imagen-local:tag registro repositorio:tag, docker push registro repositorio:tag.

Git y SSH: ssh -T git@github.com, ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts, git remote set-url origin git@github.com:usuario/repositorio.git, git pull origin rama --no-rebase.

Django: docker-compose exec backend python manage.py makemigrations, migrate, showmigrations.

Estrategias de prevención para equipos

Desarrollo: comitear migraciones tras generarlas, mantener requirements, documentar el proceso de despliegue, usar pipelines de CI CD que construyan y publiquen imágenes en ECR. DevOps: builds automáticas en ECR ante cambios en main, healthchecks en docker-compose y orquestadores, buena gestión de variables de entorno y secretos, monitoreo de logs, y procedimientos de rollback.

Conclusión

Un ticket de backend roto destapó problemas de migraciones de Django, flujos SSH y Git, contenerización y gestión de imágenes en ECR, métodos de autenticación de MySQL y ajustes en la CI CD. La lección clave: el desarrollo moderno integra múltiples piezas y comprender cómo fallan acelera la resolución.

Tiempo invertido: 6 horas. Problemas resueltos: 5. Estado del backend: listo para producción.

En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida, expertos en software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio con power bi, automatización y agentes IA. Si necesitas desplegar Django en AWS, contenerizar servicios o diseñar una arquitectura robusta y observable, podemos ayudarte. Descubre cómo aceleramos tus proyectos con nuestro equipo de plataformas y DevOps en nuestra página de servicios cloud aws y azure, y si buscas integrar tu backend con frontends multiplataforma o crear productos escalables y mantenibles, visita nuestra propuesta de aplicaciones a medida y software a medida. Potenciamos la ia para empresas con agentes IA y analítica con power bi para llevar tus decisiones al siguiente nivel.

¿Has vivido una odisea similar de despliegue Django Docker ECR y SSH con migraciones ausentes Permítenos ayudarte a convertir lo roto en robusto.

¿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