I love using the DockerOperator
Just wanted to share my love of the DockerOperator and the workflow I use with Airflow.
I've been using Airflow for a couple years now for a couple clients. I quickly started using the DockerOperator because I kept running into problems with colliding packages in python.
My default approach is to build a CLI using the Python Click package. I get the CLI working locally (tested and lock in the workflow), with each DAG task matching to a CLI command. I package it up with Docker, share the image with the VM running the docker-compose (single computer Apache Airflow), write the DAG file and am good to go.
It is great because if anything ever changes, I just have to update the docker image and push it back to the VM. If the workflow commands don't change, then I never touch the DAG. This workflow has worked with web bots, ETL actions, etc.