Lección 1 de 21 · Lectura y práctica
Instalar Airflow Localmente con Docker
Concepto claveInstalar Apache Airflow con Docker es como montar una fábrica de procesamiento de datos en un contenedor estandarizado. En lugar de construir manualmente cada máquina con todas las dependencias, Docker te permite.
Del concepto a la práctica
Taller de esta lección
La instalación reproducible depende de separar archivos del proyecto, configuración y datos persistentes. En una práctica local, usa una carpeta de trabajo con dags/, logs/ y un archivo de composición; la base de metadatos debe conservarse aunque recrees los contenedores. No confundas que un contenedor esté iniciado con que el DAG processor haya procesado el archivo.
Ejemplo resuelto
Supón que dags/ejemplo.py existe, pero la interfaz no lo muestra. Primero comprueba el montaje de ./dags al directorio de DAGs; después revisa los logs del DAG processor y valida que el archivo se pueda importar. Si recreas servicios, conserva el volumen de metadatos para no perder historial.
Pruébalo
Crea un DAG mínimo en
dags/con una tarea sin servicios externos.Inicia el entorno y confirma DAG processor, scheduler, API server y base de metadatos, además del worker si el executor lo requiere.
Abre el DAG y ejecuta una tarea manual.
Detén y vuelve a iniciar los contenedores.
Comprueba tu resultado
El DAG sigue visible y conserva una ejecución registrada.
Error frecuente
Borrar todos los volúmenes para corregir un problema de código. Corrige primero el archivo y reinicia solo el servicio necesario.
Ejercicio: cambia el DAG y demuestra que la nueva ejecución aparece sin perder la anterior. Resultado esperado: dos ejecuciones distinguibles en el historial.
Guía para la versión actual
Los ejemplos históricos de instalación usan Airflow 2. Para esta ampliación utiliza el archivo oficial de composición de Airflow 3.3.2 y Docker Compose v2, sin mezclarlo con imágenes de otra versión. El API server ofrece la interfaz y la API; el DAG processor procesa las definiciones; el scheduler planifica; la base de metadatos conserva estado. Celery añade workers y Redis, y las tareas diferidas necesitan triggerer. El inicio oficial realiza las migraciones antes de levantar el resto de servicios. Comprueba errores de importación por separado de salud de contenedores.
Conserva esta práctica en una carpeta propia y los volúmenes entre las dos ejecuciones. No borres volúmenes para resolver un error Python ni tomes el entorno de aprendizaje como una configuración productiva. Instalación oficial con Compose.

Mapa de prácticaUn DAG expresa dependencias entre tareas, sin ciclos. Una transformación puede esperar a varias entradas y la publicación debe esperar a que la carga esté lista. El orden depende de los datos necesarios, no solo de una hora del reloj.
Ver la infografía en tamaño completo ↗Concepto clave
Instalar Apache Airflow con Docker es como montar una fábrica de procesamiento de datos en un contenedor estandarizado. En lugar de construir manualmente cada máquina con todas las dependencias, Docker te permite empaquetar Airflow y todo su entorno en una imagen reproducible que funciona igual en cualquier sistema. Esto elimina el famoso "problema del funciona en mi máquina" que tanto afecta a los ingenieros de datos.
La analogía perfecta es compararlo con un kit de muebles prefabricados: en lugar de cortar, lijar y ensamblar cada pieza desde cero (instalación manual con pip y configuraciones complejas), recibes un paquete completo con todas las piezas pre-cortadas y las instrucciones exactas para montarlo rápidamente. Docker Compose actúa como el manual de instrucciones que orquesta múltiples contenedores (Airflow, base de datos, redis) para trabajar juntos armoniosamente.
Cómo funciona en la práctica
La instalación con Docker sigue un flujo estructurado que garantiza consistencia. Primero, descargas el archivo docker-compose.yaml oficial de Apache Airflow, que define todos los servicios necesarios. Este archivo es la receta que Docker Compose seguirá para crear y conectar los contenedores.
Pasos esenciales:
- Crear directorios para logs, DAGs y plugins con permisos adecuados
- Descargar y personalizar el archivo docker-compose.yaml según necesidades
- Inicializar la base de datos con
docker-compose up airflow-init - Levantar todos los servicios con
docker-compose up - Acceder a la interfaz web en
localhost:8080(usuario: airflow, contraseña: airflow)
Un ejemplo de estructura de directorios:
airflow-docker/ ├── dags/ ├── logs/ ├── plugins/ └── docker-compose.yaml
Caso de estudio
Imagina que trabajas en una fintech que necesita procesar transacciones bancarias diarias. Tu equipo tiene 3 ingenieros con diferentes sistemas operativos (Windows, macOS, Linux) y necesitan desarrollar pipelines ETL idénticos. En lugar de dedicar días a configurar entornos manualmente, implementas Airflow con Docker.
La solución:
| Componente | Configuración | Propósito |
|---|---|---|
| Airflow Scheduler | 2 CPUs, 4GB RAM | Orquestar ejecución de DAGs |
| PostgreSQL | Volumen persistente | Almacenar metadatos y estado |
| Redis | Cache temporal | Gestionar colas de ejecución |
| Worker | Escalable horizontalmente | Ejecutar tareas en paralelo |
Resultado: Los 3 ingenieros tienen el mismo entorno funcionando en 30 minutos, colaborando en los mismos DAGs sin diferencias de configuración.
Errores comunes
1. Permisos incorrectos en volúmenes: Docker corre como root dentro del contenedor pero mapea volúmenes al usuario host. Si los directorios dags/, logs/ o plugins/ tienen permisos restrictivos, Airflow no podrá escribir en ellos. Solución: Asegurar que el usuario host tenga permisos de escritura o usar chmod apropiadamente.
2. Conflicto de puertos: El puerto 8080 (interfaz web) o 5432 (PostgreSQL) pueden estar ocupados por otras aplicaciones. Solución: Modificar los puertos en el archivo docker-compose.yaml o detener los servicios conflictivos.
3. Falta de recursos del sistema: Airflow consume recursos significativos, especialmente con múltiples DAGs. Si Docker asigna muy poca memoria, los contenedores fallarán silenciosamente. Solución: Ajustar límites de recursos en Docker Desktop o aumentar la memoria disponible.
4. No inicializar la base de datos: Olvidar ejecutar docker-compose up airflow-init antes del primer inicio resultará en errores de conexión a la base de datos. Solución: Seguir estrictamente el orden de inicialización.
5. Versiones incompatibles: Usar versiones antiguas del archivo docker-compose.yaml con nuevas versiones de Docker puede causar errores de sintaxis. Solución: Siempre descargar la versión más reciente desde la documentación oficial.
Checklist de dominio
- ✓ Puedo explicar la diferencia entre instalar Airflow con Docker vs instalación manual
- ✓ He configurado correctamente los volúmenes para persistencia de datos
- ✓ Sé cómo escalar workers modificando docker-compose.yaml
- ✓ Puedo acceder a la interfaz web y verificar que todos los servicios están activos
- ✓ Entiendo cómo agregar dependencias Python personalizadas a la imagen
- ✓ Sé cómo hacer backup y restore de la base de datos de metadatos
- ✓ Puedo diagnosticar y resolver los 3 errores más comunes de permisos y puertos
Configurar un entorno Airflow con Docker para procesamiento de datos de ventas
En este ejercicio práctico, configurarás un entorno completo de Apache Airflow usando Docker para simular un caso real de procesamiento de datos de ventas.
- Preparación del entorno:
- Crea un directorio llamado
airflow-ventasy dentro, subdirectorios paradags,logs,pluginsyconfig - Descarga el archivo
docker-compose.yamloficial de Airflow 2.7+ desde GitHub - Modifica el archivo para cambiar el puerto de la interfaz web a 8081 (evitar conflictos)
- Crea un directorio llamado
- Configuración personalizada:
- En el archivo docker-compose.yaml, agrega una variable de entorno
AIRFLOW__CORE__DEFAULT_TIMEZONE: 'America/Mexico_City' - Configura el servicio de PostgreSQL para usar un volumen persistente llamado
airflow-postgres-data - Ajusta los recursos: asigna 2GB de RAM al scheduler y 1GB a cada worker
- En el archivo docker-compose.yaml, agrega una variable de entorno
- Inicialización y prueba:
- Ejecuta
docker-compose up airflow-inity verifica que termine exitosamente - Levanta todos los servicios con
docker-compose up -d - Accede a
localhost:8081e inicia sesión con las credenciales por defecto - Crea un DAG de prueba llamado
ventas_diariasen el directorio dags/
- Ejecuta
- Verificación final:
- Confirma que todos los servicios (scheduler, webserver, worker, postgres, redis) estén en estado "healthy"
- Verifica que el DAG aparezca en la interfaz web y pueda activarse
- Revisa los logs para asegurar que no hay errores de permisos o conexión
Pistas
- Recuerda que los directorios dags/, logs/ y plugins/ deben tener permisos de escritura para el usuario que ejecuta Docker
- Si la interfaz web no carga, verifica que el puerto 8081 no esté siendo usado por otra aplicación con 'netstat -an | grep 8081'
- Para ver los logs de un servicio específico, usa 'docker-compose logs [nombre-servicio]' como 'docker-compose logs scheduler'
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.
Práctica acompañada: Aprender haciendo un proyecto
Una entrega pequeña, evidencia y retroalimentación. Usa este cuaderno como práctica complementaria de la ruta; el material original de la lección continúa siendo tu referencia.
Práctica: una hora con tres etapas
Dedica diez minutos a definir la entrega y los criterios, treinta y cinco a construirla y quince a probarla. El tiempo es una guía del ejercicio, no una promesa de que cualquier tarea se resuelva en una hora. Si aparece una dependencia grande, redúcela o conviértela en un pendiente explícito.
Usa la hoja de proyecto para registrar entrada, resultado esperado y evidencia. Pide a alguien que intente usar la entrega sin tus instrucciones verbales. Observa qué pregunta primero. Una buena corrección puede ser una etiqueta, un ejemplo o una condición que antes no habías explicado.
Comprueba tu entrega
Entrega la primera versión, la versión revisada y una nota breve: qué funcionó, qué falló y qué probarías después. Conserva los archivos necesarios para repetir el ejercicio. Una captura demuestra apariencia; una consulta ejecutada o un archivo abierto demuestra otro tipo de resultado. Elige la evidencia adecuada.
Sigue con Apache Airflow: Orquestación de Pipelines ETL Complejos con DAGs
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.