{"id":25521893,"url":"https://github.com/lucaszannoni/docker_airflow","last_synced_at":"2026-04-24T16:01:51.969Z","repository":{"id":278418814,"uuid":"930283383","full_name":"LucasZannoni/Docker_Airflow","owner":"LucasZannoni","description":"Instalação básica do software Apache Airflow para uso com Docker containers.","archived":false,"fork":false,"pushed_at":"2025-07-09T15:31:32.000Z","size":952,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-09T16:39:02.155Z","etag":null,"topics":["airflow","docker-compose","docker-container","dockerfile"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LucasZannoni.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-10T11:37:05.000Z","updated_at":"2025-07-09T15:31:35.000Z","dependencies_parsed_at":"2025-07-09T16:28:07.547Z","dependency_job_id":"10089099-80dd-41dd-8a78-0cfc94182ebc","html_url":"https://github.com/LucasZannoni/Docker_Airflow","commit_stats":null,"previous_names":["lucaszannoni/docker_airflow"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/LucasZannoni/Docker_Airflow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasZannoni%2FDocker_Airflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasZannoni%2FDocker_Airflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasZannoni%2FDocker_Airflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasZannoni%2FDocker_Airflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LucasZannoni","download_url":"https://codeload.github.com/LucasZannoni/Docker_Airflow/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasZannoni%2FDocker_Airflow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32230421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airflow","docker-compose","docker-container","dockerfile"],"created_at":"2025-02-19T18:17:32.750Z","updated_at":"2026-04-24T16:01:51.944Z","avatar_url":"https://github.com/LucasZannoni.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker \u0026 Airflow\n\nEste repositório é dedicado ao deploy simplificado de uma aplicação Apache Airflow, utilizando a tecnologia de conteinerização Docker. Abaixo, segue um diagrama ilustrando o resultado esperado desta instalação:\n\n![alt text](Images/Airflow_Docker.png)\n\n## Índice\n\n- [Propósito](#propósito-deste-repositório)\n- [Airflow - Introdução](#airflow---introdução-à-ferramenta)\n- [Docker - Introdução](#docker---contêineres)\n- [Conteúdo Deste Repositório](#conteúdo-deste-repositório)\n- [Conhecimentos Necessários](#conhecimentos-necessários)\n- [Instalação - Windows](#instalação---windows)\n- [Instalação - Linux](#instalação---linux)\n- [Configurações Iniciais](#configurações-iniciais)\n- [Modo de Uso](#modo-de-uso)\n\n\n## Propósito Deste Repositório\n\nEsta Repo tem como propósito facilitar o acesso para uso educacional à plataforma Apache Airflow.Este software é muito utilizado pela comunidade de dados devido à sua facilidade para automatizar a execução de scripts python e orquestrar pipelines de dados. \n\nUma dificuldade associada a esta ferramenta, porém, está relacionada ao seu setup inicial. Como se trata de uma ferramenta open-source e com a instalação baseada em sistemas linux, podem ocorrer diversos problemas durante a instalação e configuração dos serviços, cuja solução não é amigável ao usuário que não possui familiaridade com sistemas linux, comandos em bash e configurações básicas de conexão com bases de dados relacionais (SQLite, Postgres, MySQL, dentre outras).\n\nNeste sentido, o propósito desta Repo consiste em fornecer um acesso fácil à instalação desta ferramenta através do uso de containeres Docker. Com a conteinerização, o deploy desta aplicação é facilitado substancialmente, permitindo o uso e aprendizado por parte do usuário mais iniciante, que pode dedicar seu foco e energia iniciais no entendimento da própria ferramenta.\n\n\n\n## Airflow - Introdução à Ferramenta\n\nA execução automatizada e orquestrada de tasks é essencial para garantir eficiência, escalabilidade e confiabilidade em processos de dados e workflows complexos. Nesse contexto, o Apache Airflow se destaca como uma ferramenta poderosa para orquestração de workflows, oferecendo uma interface flexível para definir, monitorar e gerenciar pipelines de dados. Com suporte a dependências entre tasks, agendamento dinâmico e escalabilidade, o Airflow tem se tornado uma escolha popular entre usuários de dados para a orquestração de seus pipelines.\n\n\n\n## Docker - Contêineres\n\nO Docker Engine, por sua vez, se trata de uma ferramenta open-source para a conteinerização de aplicações, podendo ser utilizado em diversas áreas do TI, como frontend, backend, infraestrutura e dados.\n\nUm conteiner consiste no empacotamento de uma aplicação e todas as suas dependências em uma unidade padrão para reprodução. Ele auxilia na hora de padronizar o deploy de aplicativos, uma vez que roda da mesma forma independentemente do sistema em que é realizado o deploy, permitindo que rodemos o nosso app de maneira leve, rápida e padronizada.\n\nEsta repo pode ser considerada um bom exemplo de conteinerização, onde desejamos rodar as funcionalidades básicas do Apache Airflow (Scheduler e Webserver) de maneira rápida e fácil, sem maiores preocupações com setup.\n\n\n\n## Conteúdo Deste Repositório\n\nEste repositório é composto por 4 pastas, sendo estas:\n\n1. **Database**: Imagem Docker e arquivos necessários para montagem da base de dados PostgresSQL necessária para o funcionamento do Airflow.\n\n2. **Linux**: Imagem Docker e arquvios necessários para a montagem do ambiente Linux e instalação de dependências necessárias para o funcionamento do Airflow.\n\n3. **Airflow Files**: Pastas locais para inserção de arquivos a serem utilizados pelo Airflow. Nelas, foram pré-definidos os espaços para dags, bibliotecas de usuário e arquivos com credenciais. Seu funcionamento e uso será explicado posteriormente.\n\n4. **Images**: Pasta contendo as imagens utilizadas nesta repo. Ela não é necessária para a instalação do Apache Airflow.\n\n\n\n## Conhecimentos Necessários\n\nÉ esperado que, para utilizar esta solução, o usuário possua conhecimentos básicos em **git**, **github** e **execução de comandos no prompt** do sistema operacional.\n\n\n\n## Instalação - Windows\n\nPara a instalação no sistema operacional Windows, o usuário deve seguir os seguintes passos:\n\n1.**Realize o Download e Instalação da Docker Engine:**\n\nPara que possamos montar imagens Docker, precisamos baixar a sua engine, que pode ser obtida neste [link](https://www.docker.com/products/docker-desktop/).\n\n- OBS: \n   - O link e layout do website podem mudar com o tempo. Garanta que está baixando a distribuição do Docker do website oficial da empresa.\n\n![alt text](./Images/image-1.png)\n\n- OBS: \n   - Teste a inicialização do programa Docker Desktop e, caso ele não funcione ou tente iniciar um comando WSL em seu prompt, talvez seja necessária a instalação do WSL2 (Subsistema Linux para Windows) para o funcionamento da Docker Engine. Para isso, você pode executar os seguintes comandos no seu CMD:\n\n      ```bash\n      ##Ativação do WSL\n      dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart\n      ```\n\n      ```bash\n      ##Settando o WSL2 como default.\n      ##Confirme no prompt caso este peça alguma confirmação para a instalação.\n      wsl --set-default-version 2\n      ```\n      Você também pode buscar a instalação do WSL2 nos mecanismos de busca mais comuns, como o Google. Esta distribuição de Linux para o Windows é bastante utilizada por desenvolvedores e existem diversos tutoriais ensinando a sua instalação. \n      \n      **É importante observar que  os comandos fornecidos acima podem foram definidos no momento da publicação desta repo, os quais podem mudar à medida que ocorrem atualizações ou lançamento de novas versões para os sistemas operacionais. É sugerido que sempre se verifique os comandos descritos, de modo a confirmar que os mesmos funcionam para a sua versão de sistema operacional.**\n\n\n2.**Crie uma fork deste projeto para seu próprio ambiente Github.**\n\n![alt text](./Images/image.png)\n\n3.**Baixe o repositório para seu ambiente local.**\n\n4.**Abra o Prompt de Comando e Localize-o na pasta desta repo.**\n\nApós abrir o CMD, você deve movê-lo para pasta correta com o seguinte commando:\n\n   ```bash\n   cd \u003ccaminho/para/a/pasta/da/repo\u003e\n   ```\n\n5.**Inicie o progama Docker Desktop**\n\nApós a inicialização, é importante aguardar que a a docker engine inicie. No momento da disponibilização desta repo, isto pode ser verificado no canto inferior esquerdo da aplicação.\n\n![alt text](./Images/image-2.png)\n\n6.**Realize a Build da Aplicação**\n\nPara isso, será necessário inserir o seguinte comando no CMD:\n\n   ```bash\n   docker compose up\n   ```\n\nAguarde a instalação das dependências e montagem das imagens (isso pode levar alguns minutos dependendo da capacidade de sua máquina) e pronto! Você já deve ter em mãos uma aplicação multiconteiner do airflow rodando.\n\n7.**Teste sua Instalação**\n\nO airflow, por padrão, pode ser acessado a partir da porta \"8080\" do localhost. Acesse o link e confira se é apresentada a tela de login da ferramenta.\n\n    http://localhost:8080\n\nCaso veja uma tela semelhante com a figura abaixo, parabéns! Sua instalação do Apache Airflow está completa!\n\n![alt text](./Images/image-3.png)\n\n- **Observações:**\n    - Esta build de Airflow está configurada para ser inicializada toda vez que a docker engine for ligada, caso não deseje isto, você pode executar o comando pause nos conteineres.\n    - Da mesma forma, caso os mesmos não religuem de maneira automática, podem ser iniciados com o mesmo método.\n    - Uma dica para inicialização automática, seria configurar para que o programa Docker Desktop seja iniciado junto com o Windows. Isso fará com que seu Airflow também inicie automáticamente com a ativação de sua máquina.\n\n![alt text](./Images/image-4.png)\n\n\n\n## Instalação - Linux\n\nPara a instalação no sistema operacional Linux, o usuário deve seguir os seguintes passos:\n\n1.**Realize o Download e Instalação da Docke Engine:**\n\nPara que possamos montar imagens Docker, precisamos executar alguns comandos no bash da máquina ubuntu:\n\n- OBS: Os comandos abaixo foram copiados da documentação oficial da Docker no momento da escrita desta Repo. É recomendado que você verifique se os mesmos continuam válidos no momento de sua instalação. Isso pode ser feito consultando a [documentação oficial](https://docs.docker.com/engine/install/ubuntu/).\n\nPrimeiramente, iremos adicionar o Docker à lista de pacotes do ubuntu:\n\n   ```bash\n      # Update na lista de pacotes\n      sudo apt-get update\n\n      ##Adiciona pacote curl e ca-certificates\n      sudo apt-get install ca-certificates curl\n\n      sudo install -m 0755 -d /etc/apt/keyrings\n\n      ##Busca chave GPG oficial da Docker\n      sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc\n\n      ##Modifica permissões do arquivo\n      sudo chmod a+r /etc/apt/keyrings/docker.asc\n\n      ##Adiciona o pacote docker\n      echo \\\n      \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \\\n      $(. /etc/os-release \u0026\u0026 echo \"${UBUNTU_CODENAME:-$VERSION_CODENAME}\") stable\" | \\\n      sudo tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n\n      ##Update no pacote\n      sudo apt-get update\n   ```\nAgora, iremos proceder com a instalação dos pacotes necessários\n\n\n   ```bash\n      sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n   ```\n\nPor fim, podemos testar nossa instalação, rodando um container de \"Hello World!\"\n   ```bash\n      sudo docker run hello-world\n   ```\n\nAo executar este comando, você deve receber uma mensagem no prompt semelhante à exibida abaixo: \n\n   ```bash\n      Hello from Docker!\n      This message shows that your installation appears to be working correctly.\n   ```\n\nCaso tudo esteja correto, podemos prosseguir para os próximos passos da instalação.\n\n2.**Crie uma fork deste projeto para seu próprio ambiente Github.**\n\n![alt text](./Images/image.png)\n\n3.**Baixe o repositório para seu ambiente local.**\n\n4.**Abra o Prompt de Comando e Localize-o na pasta desta repo.**\n\nApós abrir o CMD, você deve movê-lo para pasta correta com o seguinte commando:\n\n   ```bash\n   cd \u003ccaminho/para/a/pasta/da/repo\u003e\n   ```\n\n5.**Realize o Build da Aplicação**\n\nPara isso, será necessário inserir o seguinte comando no Bash:\n\n   ```bash\n   docker compose up\n   ```\n\nAguarde a instalação das dependências e montagem das imagens (isso pode levar alguns minutos dependendo da capacidade de sua máquina) e pronto! Você já deve ter em mãos uma aplicação multiconteiner do airflow rodando.\n\n6.**Teste sua Instalação**\n\nO airflow, por padrão, pode ser acessado a partir da porta \"8080\" do localhost ou Ip de sua máquina (Caso esteja utilizando uma instância EC2 ou máquina virtual). Acesse o link e confira se é apresentada a tela de login da ferramenta.\n\n    http://\u003cSEU_IP\u003e:8080\n\nCaso veja uma tela semelhante com a figura abaixo, parabéns! Sua instalação do Apache Airflow está completa!\n\n![alt text](./Images/image-3.png)\n\n- **Observações:**\n   \n   Uma dica para inicialização automática, seria adicionar o comando abaixo ao arquivo crontab do ubuntu, garantindo que sua aplicação será iniciada toda a vez que a máquina for ligada. \n\n   ```bash\n      @reboot nohup docker compose -f caminho/para/seu/arquivo/compose.yaml up\n   ```\n     \n     \n   Para acessar o arquivo crontab, você pode utilizar o seguinte comando:\n\n   ```bash\n      crontab -e\n   ```\n   Após editado o arquivo, salve-o. Com isso, sua aplicação deve ser ativada junto com a inicialização de sua máquina/instância.\n\n## Configurações Iniciais\n\nAntes de utilizar o Apache Airflow, ainda é necessário realizar as configurações iniciais, sendo elas:\n\n1.**Criação de Usuário e Senha**\n\nÉ necessária a criação de pelo menos um usuário, para isso, precisaremos acessar o conteiner ubuntu de nossa aplicação.\n\nPrimeiramente, garanta que o seu conteiner esteja ligado e, após isso, anote o \"Container ID\" do aplicação de nome \"maquina-1\".\n\n![alt text](./Images/image-5.png)\n\n- OBS: Caso esteja rodando o container em uma máquina linux, este id pode ser obtido utilizando o comando abaixo.\n\n   ```bash\n      docker container ls -a\n   ```\n\nBusque o id relativo ao container de nome \"maquina-1\". \n\nCom este valor, insira abra o CMD e execute o seguinte comando: \n\n   ```bash\n      docker exec -it \u003cinsira_o_container_id_aqui\u003e bash\n   ```\n\n- OBS: Caso esteja utilizando uma instância Linux, será necessário inicializar seu container antes de rodar o comando acima, utilizando o comando:\n\n   ```bash\n      docker container start \u003cinsira_o_container_id_aqui\u003e \n   ```\n\nUma vez inicializado o container e rodado com comando \"docker exec -it \u003cinsira_o_container_id_aqui\u003e bash\", o texto à esquerda do seu prompt de comando deve mudar, indicando que você está agora no prompt de comando do sistema ubuntu, dentro do container docker.\n\nAgora, execute o seguinte comando abaixo para criar seu usuário e senha:\n\n   ```bash\n   airflow users create -r Admin -u \u003cnome_de_usuário_aqui\u003e -e admin@example.com -f admin -l user -p \u003csenha_aqui\u003e\n   ```\n\nCaso os passos acima sejam executados de maneira correta, você deve receber uma mensagem de confirmação da criação do usuário no prompt.\n\nTeste o novo acesso tentando inserir o novo login e senha na ferramenta. Caso tudo esteja correto, você será direcionado ao painel de controle do Airflow.\n\n## Modo de Uso\n\nApós a instalação, é necessário seguir dois passos para o uso da ferramenta.\n\n1.**Inserção de Dags, Bibliotecas e Credenciais na Pasta Local**\n\nEste deploy é pensado de modo que, uma vez instalado, o usuário não precise mais acessar o ambiente docker. Para isso, iremos inserir os arquivos necessários nas pastas já mapeadas em nosso sistema (mapeamento este que é realizado de forma automática na montagem da imagem).\n\nForam configuradas 3 pastas de maneira default, as quais se encontram dentro da pasta \"Airflow_Files\", nesta Repo:\n\n- **Dags:** Nesta pasta, o usuário deverá inserir todas as DAGs a serem executadas pelo airflow, as quais irão aparecer de maneira síncrona na plataforma.\n\n- **Libs:** (Opcional): Esta pasta é de uso opcional por parte do usuário e foi pensada para que o usuário possa adicionar suas bibliotecas customizadas dentro do ambiente de instalação, para uso por parte das DAGs.\n\n- **Credentials:** (Opcional): Esta pasta é de uso opcional por parte do usuário e foi pensada para que o usuário possa adicionar suas credenciais dentro do ambiente de instalação, para uso por parte das DAGs.\n\n\n\n2.**Login na WebPage e Execução das Dags**\n\nUma vez realizadas todas as configurações necessárias, o usuário poderá realizar o login na webpage da aplicação e observar a execução de suas DAGs. Esta webpage pode ser acessada no seguinte link.\n\n    http://localhost:8080","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucaszannoni%2Fdocker_airflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucaszannoni%2Fdocker_airflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucaszannoni%2Fdocker_airflow/lists"}