postgresql - Airflow 2 / Docker:在 docker-compose.yml 中添加自定义网络失败
问题描述
我已经使用 docker-compose 安装了气流 2.0.2,如https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html中所述。使用的 docker-compose.yml 可以在这里找到:https ://airflow.apache.org/docs/apache-airflow/2.0.2/docker-compose.yaml
我想执行一个 DAG,它通过 API 下载一些数据并将其发送到在另一个 docker 容器(在另一个 docker-compose 管道中定义)中运行的 Kafka 服务器。到目前为止(不使用气流),我为 kafka / zookeper 容器使用了自定义 docker 网络;这就是为什么我还想将气流 docker 容器添加到该网络的原因。
因此,我将以下内容添加到气流的 docker-compose.yml 中:
networks:
app-tier:
driver: bridge
name: app-tier
此外,我将networks
参数包括在内x-airflow-common
,如下所示:
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)之外的所有容器的健康检查都失败,并显示以下消息:
daniel@Yoga:~/Schreibtisch/Projekte/db/airflow_neu$ docker logs airflowWorker
BACKEND=postgresql+psycopg2 DB_HOST=postgresDB_PORT=5432 .....................错误!已达到最大重试次数 (20)。
上次检查结果: $ run_nc 'postgres' '5432' Traceback (最近一次调用最后一次): File "", line 1, in socket.gaierror: [Errno -3] 名称解析临时失败 Can't parse as an IP address
我将此解释为无法再访问 Postgres 数据库,但我不知道如何解决此问题。
- 我将气流容器添加到现有网络的方法是否正确?
- 如何解决失败的健康检查?
解决方案
通过包含external
标签解决了它:
networks:
default:
external: true
name: app-tier
推荐阅读
- javascript - window.location.href 和 **.replace 连接 URL 而不是替换?
- javascript - 在 PHP 的新选项卡中打开超链接
- java - 仅从 Android Studio 上的 JAVA 中的 JSON api 获取字符串
- javascript - 用卡片创建幻灯片
- php - 如何验证 Laravel 中的数组输入?
- javascript - 我正在尝试将其他组件链接为我的下拉菜单中的选项 react-router-dom 问题
- c# - 如何让 Dispatcher 实例停止线程?
- android - 无法生成签名的 apk
- mysql - 从 mysql 表中删除唯一键约束
- javascript - 从数组中添加和删除值