当前位置: 首页 > 知识库问答 >
问题:

Airflow 2/Docker:在docker-compose.yml中添加自定义网络失败

祁永嘉
2023-03-14

我已经使用docker compose安装了airflow 2.0.2,如下所述https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html.用过的docker组成。这里可以找到yml:https://airflow.apache.org/docs/apache-airflow/2.0.2/docker-compose.yaml

我想执行一个DAG,它通过API下载一些数据,并将其发送到运行在另一个docker容器(在另一个docker-compose管道中定义)中的Kafka服务器。到目前为止(没有使用airflow),我为kafka/zookeper容器使用了自定义docker网络;这就是为什么我还想将airflow docker容器添加到这个网络中。

因此,我将以下内容添加到气流的泊坞窗组成.yml中:

networks:
  app-tier:
    driver: bridge
    name: app-tier

此外,我将网络参数包含在 x-气流-公共,如下所示:

version: '3'
x-airflow-common:
  &airflow-common
  build: .
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.0.2}
  environment:
    &airflow-common-env
    AIRFLOW__CORE__EXECUTOR: CeleryExecutor
    AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
    AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
    AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
    AIRFLOW__CORE__FERNET_KEY: ''
    AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'false'
    AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
    AIRFLOW__API__AUTH_BACKEND: 'airflow.api.auth.backend.basic_auth'
  volumes:
    - ./dags:/opt/airflow/dags
    - ./logs:/opt/airflow/logs
    - ./plugins:/opt/airflow/plugins
  user: "${AIRFLOW_UID:-50000}:${AIRFLOW_GID:-50000}"
  depends_on:
    redis:
      condition: service_healthy
    postgres:
      condition: service_healthy
  networks:
    - app-tier

但是,在启动docker compose管道时,除Postgres和Redis(worker、webserver、flower、scheduler)之外的所有容器的健康检查都失败,并显示以下html" target="_blank">消息:

daniel@Yoga:~/Schreibtisch/Projekte/db/airlow_neu$docker日志airlowWorker
BACKEND=postgresql psycopg2 db_HOST=postg雷斯

DB_PORT=5432错误!已达到最大重试次数 (20)。

最后的检查结果: $ run_nc “postgres” '5432' 回溯 (最近调用最后一个): 文件 “”, 行 1, 在 socket.gaierror: [Errno -3] 名称解析中的临时失败 无法解析为 IP 地址

我将其解释为Postgres数据库不再可访问,但我不知道如何解决这个问题。

  • 我将气流容器添加到现有网络的方法正确吗?
  • 我如何解决健康检查失败的问题?

共有1个答案

姜卜霸
2023-03-14

通过包含外部标签来解决:

networks:
  default:
    external: true
    name: app-tier
 类似资料:
  • docker-compose.yml 启动一个 order 和 一个 peer 节点。 orderer: image: hyperledger/fabric-orderer environment: - ORDERER_GENERAL_LEDGERTYPE=ram - ORDERER_GENERAL_BATCHTIMEOUT=10s - ORDERER_GENERAL_BAT

  • docker-compose.yml 启动一个 5 个节点的服务,包括 zookeeper、fabric-order 和 3 个 kafka 节点。

  • 本文向大家介绍Docker 将容器添加到网络,包括了Docker 将容器添加到网络的使用技巧和注意事项,需要的朋友参考一下 示例 此命令将myAwesomeApp-1容器连接到app-backend网络。将容器添加到用户定义的网络时,嵌入式DNS解析器(它不是功能齐全的DNS服务器,并且不可导出)允许网络上的每个容器解析同一网络上的其他容器。此简单的DNS解析器在默认网桥bridge网络上不可用。

  • 本文向大家介绍Docker网络上的用户定义网桥,包括了Docker网络上的用户定义网桥的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论为什么应该在默认桥网络上使用用户定义的桥网络。我们还将使用实际示例进行演示。 如果您使用用户定义的网桥进行容器网络连接,则该网络中的所有容器会自动将所有必需的端口公开给彼此,而不是公开给外部世界。这增加了容器之间的互操作性,并提供了更好的隔离性。 使用

  • 问题内容: 在Docker中使用自定义网络时 并尝试运行它,我得到了错误 错误:网络服务层已声明为外部,但找不到。请使用手动创建网络,然后重试。 是否可以使用docker-compose自动创建网络,还是除了首先手动创建网络外没有其他方法? 问题答案: 是使用现有网络。如果您想组成网络,只需执行以下操作: ..指示组成网络。它们将被命名为使用验证创建。 您还可以覆盖默认网络或指定更多属性。 ..将