Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose: Uruchom środowisko w 5 minut!

You are currently viewing Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose: Uruchom środowisko w 5 minut!
Photo by Drew Beamer on Unsplash
Share This Post, Help Others, And Earn My Heartfelt Appreciation! :)
4.9
(561)

W tym poście pokaże Ci jak w 5 minut stworzyć w pełni działające środowisko Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose, w którego skład wejdą:

Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose

  • Apache Airflow WebServer
  • Apache Airflow Worker
  • Apache Airflow Scheduler
  • Flower – internetowe narzędzie do monitorowania i zarządzania klastrami Celery
  • Redis – to open source (licencjonowany BSD) magazyn struktur danych w pamięci, wykorzystywany jako baza danych, pamięć podręczna i broker komunikatów.

Skrypt docker-compose.yml

Utwórz plik docker-compose.yml i wklej poniższy skrypt. Następnie uruchom komende docker-compos up -d.

(Poniższy skrypt został zaczerpnięty ze strony Puckel)

version: '2.1'
services:
    redis:
        image: 'redis:5.0.5'
        # command: redis-server --requirepass redispass

    postgres:
        image: postgres:9.6
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow
        # Uncomment these lines to persist data on the local filesystem.
        #     - PGDATA=/var/lib/postgresql/data/pgdata
        # volumes:
        #     - ./pgdata:/var/lib/postgresql/data/pgdata

    webserver:
        image: puckel/docker-airflow:1.10.4
        restart: always
        depends_on:
            - postgres
            - redis
        environment:
            - LOAD_EX=n
            - FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
            - EXECUTOR=Celery
            # - POSTGRES_USER=airflow
            # - POSTGRES_PASSWORD=airflow
            # - POSTGRES_DB=airflow
            # - REDIS_PASSWORD=redispass
        volumes:
            - ./dags:/usr/local/airflow/dags
            # Uncomment to include custom plugins
            # - ./plugins:/usr/local/airflow/plugins
        ports:
            - "8080:8080"
        command: webserver
        healthcheck:
            test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
            interval: 30s
            timeout: 30s
            retries: 3

    flower:
        image: puckel/docker-airflow:1.10.4
        restart: always
        depends_on:
            - redis
        environment:
            - EXECUTOR=Celery
            # - REDIS_PASSWORD=redispass
        ports:
            - "5555:5555"
        command: flower

    scheduler:
        image: puckel/docker-airflow:1.10.4
        restart: always
        depends_on:
            - webserver
        volumes:
            - ./dags:/usr/local/airflow/dags
            # Uncomment to include custom plugins
            # - ./plugins:/usr/local/airflow/plugins
        environment:
            - LOAD_EX=n
            - FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
            - EXECUTOR=Celery
            # - POSTGRES_USER=airflow
            # - POSTGRES_PASSWORD=airflow
            # - POSTGRES_DB=airflow
            # - REDIS_PASSWORD=redispass
        command: scheduler

    worker:
        image: puckel/docker-airflow:1.10.4
        restart: always
        depends_on:
            - scheduler
        volumes:
            - ./dags:/usr/local/airflow/dags
            # Uncomment to include custom plugins
            # - ./plugins:/usr/local/airflow/plugins
        environment:
            - FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
            - EXECUTOR=Celery
            # - POSTGRES_USER=airflow
            # - POSTGRES_PASSWORD=airflow
            # - POSTGRES_DB=airflow
            # - REDIS_PASSWORD=redispass
        command: worker

Sprawdź status kontenerów

Zanim przejdziesz do stron z interfejsem użytkownika, sprawdź czy wszystkie kontenery mają status „UP”. W tym celu użyj komendy:

docker-compose ps
           Name                         Command                  State                         Ports                   
-----------------------------------------------------------------------------------------------------------------------
airflow-docker_flower_1      /entrypoint.sh flower            Up             0.0.0.0:5555->5555/tcp, 8080/tcp, 8793/tcp
airflow-docker_postgres_1    docker-entrypoint.sh postgres    Up             5432/tcp                                  
airflow-docker_redis_1       docker-entrypoint.sh redis ...   Up             6379/tcp                                  
airflow-docker_scheduler_1   /entrypoint.sh scheduler         Up             5555/tcp, 8080/tcp, 8793/tcp              
airflow-docker_webserver_1   /entrypoint.sh webserver         Up (healthy)   5555/tcp, 0.0.0.0:8080->8080/tcp, 8793/tcp
airflow-docker_worker_1      /entrypoint.sh worker            Up             5555/tcp, 8080/tcp, 8793/tcp          

Interfejs użytkownika

Gdy wszystkie kontenery są uruchomione, możemy otworzyć kolejno:

  • localhost:8080 – Apache Airflow UI
  • localhost:5555 – Flower UI

Testowy DAG

W katalogu, gdzie uruchamialiśmy plik dokcer-compose.yml utworzyony został katalog „dags”. Utwórzmy w nim nasz testowy DAG. W tym celu przekieruję Cię do mojego innego posta, gdzie dokładnie opisałem jak to zrobić.

W skrócie: w katalogu „dags” należy utworzyć testowy dag (plik python). Automatycznie on pojawi się na Airflow UI.

Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose: Uruchom środowisko w 5 minut!
Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose: Uruchom środowisko w 5 minut!
Airflow UI. Następnie wystarczy, że go po prostu uruchomisz. Dodatkowo sprawdź monitoring z poziomu Flower UI. (Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose

To by było na tyle jak uruchomić środowisko składające się z Apache Airflow CeleryExecutor PostgreSQL Redis Docker-Compose w kilka minut!

Jeśli spodobał Ci się ten post to zostaw proszę komentarz poniżej lub udostępnij ten post na swoim Facebook’u, Twitter’ze, LinkedIn lub innej stronie z mediami społecznościowymi.
Dzięki!

How useful was this post?

Click on a star to rate it!

Average rating 4.9 / 5. Vote count: 561

No votes so far! Be the first to rate this post.

Subscribe
Powiadom o
guest
0 Comments
Inline Feedbacks
View all comments