#Airflow, MinIO e Postgres com DockerCompose Estrutura containerizada de um ambiente de execução com Apache Airflow, MinIO e PostgreSQL
- Linux (A distribuição que você preferir)
- Docker ( >= 20.10.18 )
- Docker Compose (>= 1.29.2)
Obs.: O projeto pode ser executado no Windows, desde que habilitado o WSL-2.
Os três diretórios dentro de airflow, não precisam ser necessariamente criados antes de executar o compose. O compose vai criá-los, se necessário. Porém, se clonar este repositório, a estrutura será replicada em sua máquina.
.
├── .env
├── airflow
│ ├── dags
│ ├── logs
│ └── plugins
├── docker-compose.yaml
└── minio
└── data
Para evitar o consumo desenfreado de memória RAM pelos containers orquestrados pelo Docker Compose, é imprescindível definir no docker-compose.yaml os limites por container. Se subir os containers sem definição de limites, vai ser praticamente impossível utilizar a máquina aonde os containers estiverem rodando.
O trecho de código abaixo, foi definido e personalizado para cada um dos serviços. Ajuste-os conforme sua necessidade, tendo em mente que o mínimo requerido pelo Airflow é 4GB de RAM. Neste projeto, limitei apenas o consumo de RAM. Também é possível limitar o uso de processador. Para mais detalhes, consulte a documentação oficial do Docker Compose.
airflow-webserver:
<<: *airflow-common
# command: webserver
command: bash -c "airflow webserver & airflow scheduler"
ports:
- 8080:8080
deploy:
resources:
limits:
# Indica o limite máximo de memória a ser utilizada por este container
memory: 4GB
reservations:
memory: 2GBNa raiz do projeto, execute:
$ echo -e "AIRFLOW_UID=$(id -u)" > .envLeia os comentários no arquivo docker-compose.yaml e defina as variáveis de ambiente no arquivo .env. Se não houver definições no .env, os containers serão criados com os valores defaults indicados no arquivo compose.
Inicie a configuração inicial do airflow e database, como a seguir:
$ docker-compose up airflow-initApós algumas mensagens no terminal, se tudo correr bem, a instrução será finalizada, indicando o código de saída 0. Inicie agora os containers:
$ docker-compose upSe nem um erro ocorrer, em instantes o seu terminal irá exibir várias mensagens de log, indicando o funcionamento do webserver e do scheduler.
Para finalizar os containers, pressione ctrl+c e aguarde.
Se desejar subir os containers como daemons, execute o compose da seguinte forma:
$ docker-compose up -dO Airflow poderá ser acessado pelo endereço: http://localhost:8080
O MinIO estará disponível no endereço: http://localhost:9001