Neste tutorial, você aprenderá a configurar e executar o Apache Airflow usando Docker de forma simples e prática. O Airflow é uma plataforma para desenvolver, agendar e monitorar workflows de dados.
- Sistema operacional: Linux, macOS ou Windows (com WSL2)
- Conexão com internet
- Privilégios de administrador para instalação
# Atualize os pacotes
sudo apt update
# Instale dependências
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
# Adicione a chave GPG oficial do Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Adicione o repositório do Docker
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instale Docker Engine e Docker Compose
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Adicione seu usuário ao grupo docker (para não precisar usar sudo)
sudo usermod -aG docker $USER
- Baixe o Docker Desktop em: https://www.docker.com/products/docker-desktop
- Instale o arquivo
.dmg
baixado - Abra o Docker Desktop e aguarde a inicialização
- Instale o WSL2 (Windows Subsystem for Linux)
- Baixe o Docker Desktop em: https://www.docker.com/products/docker-desktop
- Instale seguindo as instruções do instalador
- Certifique-se de que a integração com WSL2 está habilitada
Após a instalação, reinicie seu terminal (ou faça logout/login no Linux) e execute os comandos de verificação:
docker run hello-world
O que esperar: Uma mensagem de boas-vindas confirmando que o Docker está funcionando corretamente.
docker-compose --version
O que esperar: Algo como docker-compose version 2.x.x
💡 Dica: Se você receber erros de permissão no Linux, certifique-se de ter executado o comando
usermod
e reiniciado o terminal.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.1/docker-compose.yaml'
O que isso faz: Baixa o arquivo de configuração oficial do Airflow otimizado para Docker.
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env
O que isso faz:
dags/
: Onde você colocará seus workflows (DAGs)logs/
: Armazena logs do sistemaplugins/
: Para plugins personalizadosconfig/
: Configurações adicionais.env
: Define o ID do usuário para evitar problemas de permissão
docker compose up airflow-init
O que isso faz: Configura o banco de dados interno do Airflow e cria o usuário administrador.
Aguarde até ver: Uma mensagem indicando que a inicialização foi concluída com sucesso.
docker compose up -d --build
O que isso faz: Inicia todos os serviços do Airflow em segundo plano (modo detached).
Aguarde: Cerca de 2-3 minutos para todos os serviços inicializarem completamente.
- Abra seu navegador
- Acesse: http://localhost:8080
- Use as credenciais:
- Usuário:
airflow
- Senha:
airflow
- Usuário:
O que você verá: A interface principal do Airflow com exemplos de DAGs já carregados.
docker-compose ps
O que esperar: Uma lista mostrando todos os serviços do Airflow rodando (webserver, scheduler, worker, etc.).
- ✅ airflow-webserver (porta 8080)
- ✅ airflow-scheduler
- ✅ airflow-worker
- ✅ postgres (banco de dados)
- ✅ redis (message broker)
Quando quiser parar todos os serviços:
docker-compose down
O que isso faz: Para e remove todos os containers, mas mantém os dados persistidos.
Após seguir todos os passos, você terá esta estrutura:
meu-projeto-airflow/
├── dags/ # ← Coloque seus DAGs aqui
├── logs/ # ← Logs automáticos
├── plugins/ # ← Plugins personalizados
├── config/ # ← Configurações extras
├── docker-compose.yaml # ← Configuração dos serviços
└── .env # ← Variáveis de ambiente
- Crie seu primeiro DAG: Coloque um arquivo Python na pasta
dags/
- Explore a interface: Navegue pelas abas DAGs, Admin, Browse
- Execute workflows: Ative e execute os DAGs de exemplo
- Monitore logs: Use a interface para acompanhar execuções
Para que seus DAGs possam interagir com outros serviços, como o Spark, você precisa configurar as conexões na interface do Airflow.
- Na interface do Airflow, vá para Admin -> Connections.
- Clique no botão
+
para adicionar uma nova conexão. - Preencha o formulário com os seguintes valores:
- Connection Id:
spark_default
- Connection Type:
Spark
- Description:
Conexão local com Spark via spark-submit
- Host:
local[*]
- Deploy mode:
client
- Spark binary:
spark-submit
- Connection Id:
- Os outros campos podem ser deixados com seus valores padrão.
- Clique em Save.
Com esta configuração, você poderá executar tarefas do tipo SparkSubmitOperator
em sua máquina local.
Solução:
sudo chown -R $USER:$USER ./dags ./logs ./plugins ./config
Solução: Mude a porta no arquivo docker-compose.yaml
:
ports:
- "8081:8080" # Usa porta 8081 ao invés de 8080
Solução:
docker-compose down -v # Remove volumes
docker-compose up airflow-init # Reinicializa
docker-compose up -d
# Ver logs de um serviço específico
docker-compose logs airflow-webserver
# Reiniciar todos os serviços
docker-compose restart
# Entrar no container do webserver
docker-compose exec airflow-webserver bash
# Atualizar apenas um serviço
docker-compose up -d airflow-webserver
🎊 Parabéns! Você agora tem o Apache Airflow rodando em Docker e está pronto para criar e gerenciar seus workflows de dados!