如何访问Airflow 2.0 cli

Sha*_*ker 3 docker docker-compose airflow airflow-scheduler

我正在使用 docker 运行气流,并且我想使用 cli 来执行暂停取消暂停dag,因为我无法在远程Digital Ocean Droplet 服务器上安装浏览器来访问气流 UI。

目前我正在尝试使用命令访问气流 cli,sudo docker exec -it $(docker-compose -f docker-compose.yaml ps -q webserver) bash 但出现错误

docker.errors.DockerException: 获取服务器 API 版本时出错: ('连接中止。', PermissionError(13, '权限被拒绝')) [95826] 无法执行脚本 docker-compose “docker exec” 需要至少 2 个参数。

下面是我的docker-compose.yaml文件

version: '3'
x-airflow-common:
  &airflow-common
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.0.1}
  environment:
    &airflow-common-env
    AIRFLOW__CORE__EXECUTOR: LocalExecutor
    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'
  volumes:
    - ./dags:/opt/airflow/dags
    - ./logs:/opt/airflow/logs
    - ./plugins:/opt/airflow/plugins
  user: "${AIRFLOW_UID:-50000}:${AIRFLOW_GID:-50000}"
  depends_on:
    postgres:
      condition: service_healthy

services:
  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    volumes:
      - postgres-db-volume:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "airflow"]
      interval: 5s
      retries: 5
    restart: always

  airflow-webserver:
    <<: *airflow-common
    command: webserver
    ports:
      - 8081:8080
    healthcheck:
      test: ["CMD", "curl", "--fail", "http://localhost:8080/health"]
      interval: 10s
      timeout: 10s
      retries: 5
    restart: always

  airflow-scheduler:
    <<: *airflow-common
    command: scheduler
    restart: always

  airflow-init:
    <<: *airflow-common
    command: version
    environment:
      <<: *airflow-common-env
      _AIRFLOW_DB_UPGRADE: 'true'
      _AIRFLOW_WWW_USER_CREATE: 'true'
      _AIRFLOW_WWW_USER_USERNAME: ${_AIRFLOW_WWW_USER_USERNAME:-airflow}
      _AIRFLOW_WWW_USER_PASSWORD: ${_AIRFLOW_WWW_USER_PASSWORD:-airflow}

volumes:
  postgres-db-volume:
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Jar*_*iuk 9

如果你查看我们最近的quick-startdocker compose,你会发现你可以添加一个单独的 `airflow-cli' docker compose(它将在明天/后天与 2.1.4 一起发布,但你可以在这里看到它:

https://github.com/apache/airflow/blob/v2-1-stable/docs/apache-airflow/start/docker-compose.yaml#L229

  airflow-cli:
    <<: *airflow-common
    profiles:
      - debug
    environment:
      <<: *airflow-common-env
      CONNECTION_CHECK_MAX_COUNT: "0"
    # Workaround for entrypoint issue. See: https://github.com/apache/airflow/issues/16252
    command:
      - bash
      - -c
      - airflow
Run Code Online (Sandbox Code Playgroud)

如果您已将其添加到 docker-compose 中,则可以运行docker-compose run airflow-cli <command>(和其他命令)

配置文件debug确保airflow-cli默认情况下不会启动该服务,只有在您指定--profile debug或明确指定要运行的服务时才启动该服务。