【问题标题】:Using Github repository as Airflow DAGs directory使用 Github 存储库作为 Airflow DAGs 目录
【发布时间】:2023-01-18 05:01:28
【问题描述】:

我目前正在运行 docker-compose 来运行存储在本地卷中的 Airflow DAG。我如何使用 Github 存储库作为 DAG 的卷?如何设置连接?是否可以将 Github 存储库用作卷?

我在 docker-compose.yaml 中的当前设置

  &airflow-common
  build: .
  env_file:
    - ./config/development.env
  environment:
    &airflow-common-env
    AIRFLOW__CORE__EXECUTOR: LocalExecutor
    AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
    # For backward compatibility, with Airflow <2.3
    AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
    AIRFLOW__CORE__FERNET_KEY: ''
    AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
    AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
    AIRFLOW__API__AUTH_BACKENDS: 'airflow.api.auth.backend.basic_auth'
    _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
  volumes:
    - ./dags:/opt/airflow/dags
    - ./logs:/opt/airflow/logs
    - ./plugins:/opt/airflow/plugins
    - ./includes:/opt/airflow/includes
  user: "${AIRFLOW_UID:-50000}:0"
  depends_on:
    &airflow-common-depends-on
    postgres:
      condition: service_healthy

【问题讨论】:

  • 我没有对此进行测试,但您可以在 docker compose yaml 中使用 git clone as a command。我个人只是将代码拉入本地卷,然后为本地开发人员安装。对于使用 K8s 的生产环境,可以选择 git-sync sidecar

标签: github docker-compose airflow


【解决方案1】:

Airflow 在官方的 helm chart 中提供了一个 sidecar 容器来将 dag 文件与 git 同步,这个容器运行在调度器和 workers pod 的同一个 pod 中,用于定期从 git repo 下载 dag 文件。

当您使用 docker compose 时,您可以通过在堆栈上运行一个 git-sync 容器来做类似的事情,并在调度程序和工作容器以及 git-sync 容器之间创建一个共享卷。

Here 是容器之间共享卷的示例,对于 git-sync 容器,您可以使用图像 k8s.gcr.io/git-sync/git-sync:v3.4.0,对于它的配置,here 是项目的 github repo,您​​可以检查文档以配置容器。

【讨论】:

    猜你喜欢
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多