Lección 1 de 20 · Lectura y práctica
Instalación de Airflow con Docker para Desarrollo Local
Concepto claveLa instalación de Apache Airflow con Docker para desarrollo local es una estrategia que permite crear un entorno aislado y reproducible donde puedes diseñar, probar y depurar tus DAGs (Directed Acyclic Graphs) sin.
Del concepto a la práctica
Taller de esta lección
La instalación local debe tratarse como una comprobación de componentes, no como un comando aislado. Para que Airflow funcione, el contenedor del planificador, la interfaz y la base de metadatos deben compartir red, volúmenes y una configuración compatible. El objetivo es poder crear un DAG, verlo y ejecutar una tarea sin tocar sistemas externos.
Ejemplo resuelto
Supón un proyecto con dags/, logs/ y plugins/. Antes de iniciar, revisa que el archivo de composición monte ./dags en la ruta de DAGs del contenedor. Tras iniciar los servicios, la evidencia mínima es: contenedores activos, interfaz accesible localmente y un DAG visible después de guardar un archivo Python válido.
Pruébalo
Crea las tres carpetas y un DAG mínimo sin conexiones externas.
Inicia el entorno y observa los servicios activos.
Comprueba que el DAG aparece y ejecuta una tarea que escriba un mensaje.
Detén y vuelve a iniciar para verificar que el DAG y los logs permanecen.
Error frecuente: montar solo el archivo DAG y no el directorio de logs. Corrígelo usando volúmenes separados y permisos de lectura adecuados.
Ejercicio: reinicia el entorno y registra qué servicios vuelven a estar disponibles.
Comprueba tu resultado
el DAG sigue visible y el log conserva la ejecución anterior.

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
La instalación de Apache Airflow con Docker para desarrollo local es una estrategia que permite crear un entorno aislado y reproducible donde puedes diseñar, probar y depurar tus DAGs (Directed Acyclic Graphs) sin afectar sistemas de producción. Imagina que Docker es como una caja de herramientas portátil: dentro tienes todo lo necesario (Airflow, sus dependencias, bases de datos) empaquetado en contenedores, listo para usar en cualquier máquina. Esto elimina problemas de compatibilidad entre sistemas operativos y versiones de software, similar a cómo un chef lleva sus utensilios a una cocina ajena para garantizar resultados consistentes.
Para un Data Engineer intermedio, esta aproximación es crucial porque acelera el ciclo de desarrollo. En lugar de perder horas configurando manualmente Airflow y sus componentes (como el metadatabase o el executor), Docker te ofrece una solución preconfigurada. Los contenedores actúan como máquinas virtuales ligeras: cada uno ejecuta un servicio específico (por ejemplo, Airflow webserver, scheduler, base de datos PostgreSQL) y se comunican entre sí a través de una red virtual. Esto simula un entorno de producción en miniatura, permitiéndote validar pipelines ETL complejos antes de desplegarlos.
Cómo funciona en la práctica
El proceso sigue estos pasos:
- Preparación del entorno: Instala Docker y Docker Compose en tu máquina local. Estos son los únicos requisitos previos, ya que todo lo demás se gestiona dentro de contenedores.
- Descarga de la configuración oficial: Airflow proporciona un archivo
docker-compose.yamloficial que define todos los servicios necesarios. Este archivo es como un plano de construcción que especifica qué contenedores crear, cómo configurarlos y cómo conectarlos. - Personalización: Ajusta el archivo
docker-compose.yamlsegún tus necesidades. Por ejemplo, puedes cambiar la versión de Airflow, agregar variables de entorno para conexiones a bases de datos externas, o montar volúmenes para persistir datos. - Inicialización: Ejecuta comandos Docker Compose para iniciar los servicios. Esto descarga las imágenes de Docker (si no las tienes) y levanta los contenedores. Una vez completado, accedes a la interfaz web de Airflow en
http://localhost:8080.
Un ejemplo básico de configuración en el archivo docker-compose.yaml incluye servicios como:
| Servicio | Función |
|---|---|
| postgres | Base de datos para metadatos de Airflow |
| redis | Broker de mensajes para el executor Celery |
| airflow-webserver | Interfaz web para gestionar DAGs |
| airflow-scheduler | Orquesta la ejecución de tareas |
| airflow-worker | Ejecuta tareas en paralelo (si usas Celery) |
Caso de estudio
Supongamos que eres un Data Engineer en una empresa de e-commerce que necesita orquestar un pipeline ETL diario. El pipeline extrae datos de ventas de una API, los transforma para calcular métricas como ingresos por región, y los carga en un data warehouse. Con Airflow en Docker, puedes simular este flujo localmente:
- Configuración inicial: Descargas el archivo
docker-compose.yamloficial de Airflow y lo modificas para usar la versión 2.7.0 (estable). Agregas un volumen para mapear una carpeta local donde guardarás tus DAGs, asegurando que los cambios en código se reflejen automáticamente en Airflow. - Desarrollo del DAG: Creas un DAG en Python que define tareas para extraer datos (usando un operador Python), transformarlos (con Pandas en un operador personalizado) y cargarlos (con un operador para PostgreSQL). Lo guardas en la carpeta mapeada, y Airflow lo detecta al instante.
- Pruebas: En la interfaz web, activas el DAG y monitoreas su ejecución. Usas los logs de los contenedores para depurar errores, como problemas de conexión a la API. Esto te permite iterar rápidamente sin riesgos para producción.
Dato importante: Según la documentación de Airflow, la configuración con Docker reduce el tiempo de setup de horas a minutos, ideal para entornos de desarrollo ágiles.
Errores comunes
- Permisos incorrectos en volúmenes: Al mapear carpetas locales a contenedores, los permisos de archivos pueden causar que Airflow no lea los DAGs. Solución: Asegúrate de que los archivos tengan permisos de lectura para el usuario dentro del contenedor (por defecto, usuario
airflowcon UID 50000). - Conflicto de puertos: Si otro servicio usa el puerto 8080 en tu máquina, el webserver de Airflow fallará al iniciar. Solución: Cambia el mapeo de puertos en
docker-compose.yaml, por ejemplo, de8080:8080a8081:8080para acceder enhttp://localhost:8081. - Falta de recursos del sistema: Docker puede consumir mucha RAM y CPU, especialmente con múltiples contenedores. Solución: Ajusta los límites en la configuración de Docker Desktop o usa comandos como
docker-compose up --scale airflow-worker=2para controlar el número de workers. - Olvidar inicializar la base de datos: Antes de usar Airflow por primera vez, debes ejecutar
docker-compose up airflow-initpara configurar la base de datos. Si lo omites, los servicios no funcionarán correctamente. - No gestionar variables y conexiones: En desarrollo, es común hardcodear credenciales en DAGs, lo que es inseguro. Solución: Usa la interfaz web o comandos de Airflow para definir variables y conexiones de forma segura desde el inicio.
Checklist de dominio
- Verifica que Docker y Docker Compose estén instalados y funcionando en tu sistema operativo.
- Descarga y personaliza el archivo
docker-compose.yamloficial de Airflow para tu versión deseada. - Ejecuta el comando de inicialización para configurar la base de datos de metadatos.
- Inicia todos los servicios con Docker Compose y accede a la interfaz web en el puerto configurado.
- Crea un DAG simple, guárdalo en la carpeta mapeada, y confirma que Airflow lo detecte automáticamente.
- Configura al menos una conexión (por ejemplo, a PostgreSQL) y una variable en Airflow para usarlas en un DAG.
- Monitorea los logs de los contenedores para depurar un error simulado en una tarea.
Configura un entorno local de Airflow con Docker y despliega tu primer DAG ETL
Sigue estos pasos para instalar Airflow con Docker y probar un pipeline básico:
- Prepara tu máquina: Si no tienes Docker instalado, descárgalo desde docker.com. Asegúrate de que Docker Compose esté incluido (viene con Docker Desktop en Windows/Mac, o instálalo por separado en Linux).
- Obtén la configuración de Airflow: Descarga el archivo
docker-compose.yamloficial desde la documentación de Airflow (versión 2.7.0). Guárdalo en una carpeta nueva, por ejemplo,~/airflow-docker. - Personaliza la configuración: Abre el archivo
docker-compose.yamly realiza estos cambios:- Cambia la versión de la imagen de Airflow a
apache/airflow:2.7.0. - Agrega un volumen para mapear una carpeta local (por ejemplo,
./dags) al directorio de DAGs en el contenedor (/opt/airflow/dags). - Modifica el puerto del webserver si el 8080 está en uso (por ejemplo, usa
8081:8080).
- Cambia la versión de la imagen de Airflow a
- Inicializa Airflow: En la terminal, navega a la carpeta con el archivo
docker-compose.yamly ejecuta:
Espera a que complete, lo que configurará la base de datos.docker-compose up airflow-init - Inicia los servicios: Ejecuta:
Esto levantará todos los contenedores en segundo plano. Verifica que estén corriendo condocker-compose up -ddocker-compose ps. - Accede y prueba: Abre tu navegador en
http://localhost:8080(o el puerto que configuraste). Usa las credenciales por defecto (usuario:airflow, contraseña:airflow). Crea un DAG simple en la carpeta mapeada (por ejemplo, un DAG que imprima "Hola Mundo" cada minuto) y confirma que aparezca en la interfaz. - Ejecuta un pipeline ETL simulado: Desarrolla un DAG con tres tareas:
- Extraer: Usa un operador Python para generar datos ficticios de ventas (por ejemplo, una lista de diccionarios con producto, cantidad y precio).
- Transformar: En otra tarea, calcula el ingreso total (cantidad * precio) y filtra productos con ingreso mayor a 100.
- Cargar: Usa un operador para guardar los resultados en un archivo CSV local.
Pistas
- Si el webserver no carga, revisa los logs con 'docker-compose logs airflow-webserver' para ver errores específicos.
- Para acceder a la terminal de un contenedor y depurar, usa 'docker exec -it [nombre-contenedor] bash'.
- Asegúrate de que tu DAG tenga un 'dag_id' único y esté en la carpeta correcta mapeada; Airflow escanea cada 30 segundos.
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: Construcción de Pipelines ETL Automatizados 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.