Utilizando o conceito de Docker Operator para execução local do Airflow com Docker em execuções de código ETL fora da DAG do Airflow. 🇧🇷
✔️ Facilidade de ter vários workspaces.
✔️ Códigos ETL fora da DAG.
✔️ Dependências fora do Airflow.
🎯 De início caso não tenha instalado, você precisa fazer a instalação do docker em sua máquina (exemplo no linux Ubuntu).
-
sudo apt-get update
-
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
-
sudo mkdir -p /etc/apt/keyrings
-
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
-
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
sudo apt-get update
-
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
git clone https://github.com/goismarcos/airflow-docker-repository.git
3. Entre no diretório airflow-docker-repository/airflow-docker/
e execute o comando abaixo para que seus arquivos não sejam criados como root. Esse código irá gerar um arquivo .env que indicará o id do seu usuário a comunicará com o Airflow:
echo -e "AIRFLOW_UID=$(id -u)" > .env
4. Antes de subirmos o docker do AirFlow vamos criar um docker operator que ficará com os códigos Python de ETL, para não se misturarem com a DAG do AirFlow, se tornando um ambiente mais organizado e de fácil manutenção. Para isso acesse a pasta docker-operator-etl/
e execute o seguinte comando(lembre-se de estar como usuário root):
docker build . --tag docker-operator-etl:latest
5. Com o docker já construído, agora faremos a comunicação do docker do AirFlow com o docker que contém nossos código de ETL. Execute o seguinte comando dentro do diretório airflow-docker/docker-socket-proxy/
:
docker build . --tag docker-socket-proxy:latest
6. Para que você possa colocar suas transformações em arquivos(txt, csv, etc) entre na pasta airflow-docker/data/
e execute o comando $ pwd
, copie o diretório resultante do comando e cole dentro do código airflow-docker/data/exemple_dag.py
no parâmetro Mount da criação da Dag.
7. Agora que temos a comunicação feita, basta acessar o diretório airflow-docker/
e subir o docker Airflow:
docker compose up
8. Após alguns minutos acesse no seu navegador o Airflow com user:airflow
senha:airflow
e teste a DAG construída:
localhost:8080