Jak přidat proudění vzduchu proměnných v docker compose souboru?

0

Otázka

Mám docker compose soubor, který se točí místní proudění vzduchu stupně, jak je uvedeno níže:

version: '3.7'
services:
    postgres:
        image: postgres:9.6
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow
        logging:
            options:
                max-size: 10m
                max-file: "3"

    webserver:
        image: puckel/docker-airflow:1.10.6
        restart: always
        depends_on:
            - postgres
        environment:
            - LOAD_EX=n
            - EXECUTOR=Local
            - FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
        logging:
            options:
                max-size: 10m
                max-file: "3"
        volumes:
            - ./dags:/usr/local/airflow/dags
            - ${HOME}/.aws:/usr/local/airflow/.aws
        ports:
            - "8080:8080"
        command: webserver
        healthcheck:
            test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
            interval: 30s
            timeout: 30s
            retries: 3

Chci přidat nějaké proudění Vzduchu proměnných, které základní dag používá např: CONFIG_BUCKET. Přidal jsem je jako AIRFLOW_VAR_CONFIG_BUCKET=s3://foo-kbelík v prostředí části webového serveru, ale nezdá se do práce. Nějaké nápady, jak mohu dosáhnout ?

airflow docker
2021-11-22 15:34:32
2

Nejlepší odpověď

1

Neměli byste přidat proměnné na webserver, ale plánovač. Pokud používáte LocalExecutor, úkoly, které jsou spouštěny v rámci Plánovače.

Vlastně to, co tou by opravdu měli udělat, je nastavit všechny env proměnných, které mají být stejné pro všechny kontejnery (to je vysvětleno zde https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html)

Použití stejné konfigurace napříč všemi proudění Vzduchu komponenty. Zatímco každá komponenta nevyžaduje, aby všechny, některé konfigurace musí být stejné, jinak nebudou fungovat, jak se očekávalo. Dobrým příkladem pro to je secret_key, které by měly být stejné na Webserver a Pracovník povolit Webserver načíst protokoly od Pracovníka.

Existuje řada způsobů, jak můžete to udělat - stačí si přečíst docker-compose documntation na to https://docs.docker.com/compose/environment-variables . Můžete se také podívat na "Rychlý start" docker compose od proudění Vzduchu docs, kde jsme použili kotvy - což je trochu více sphisticated způsobem https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html

Jen vědomí, že "rychlý start" by měla být jen inspirace, je to zdaleka výrobní nastavení, a pokud chcete, aby vaše vlastní docker compose je třeba opravdu získat hlubší porozumění docker compose - jak upozorňují v poznámce v naší docs.

2021-11-23 11:35:43
1

Pokud přidáte proměnnou prostředí jménem AIRFLOW_VAR_CONFIG_BUCKET do seznamu pod environment:to by měla být přístupná proudění Vzduchu. Zní to jako děláte to správně.

Dvě věci poznámka:

  • Proměnné (a připojení) nastavena pomocí proměnné prostředí nejsou viditelné proudění Vzduchu UI. Můžete si vyzkoušet, zda existují provedením Variable.get("config_bucket") v kódu.
  • Proudění Vzduchu plánovač/pracovníka (v závislosti na proudění Vzduchu exekutor) vyžadují přístup k proměnné při běhu úkol. Přidání proměnné webserver není nutné.
2021-11-22 15:40:46

Vypadá to, že jeho nebere, jak to říká, že proměnná 'config_bucket' neexistuje
CyberPunk

Jak jste (znovu)spuštění Docker images? Změny proměnné prostředí ukazují pouze po úplném zastavení/start, ne restartuje jediné služby.
Bas Harenslak

Používám docker compose up a docker compose dolů pro spuštění/zastavení služby
CyberPunk

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................