如何在基于 Docker Compose 构建的 Airflow 中使用主机的网络?

问题描述 投票:0回答:1

我想从本地安装的旧 Airflow 迁移到新 Airflow。我正在尝试通过 Docker 和 Docker Compose 运行新的 Airflow。我正在使用官方的docker-compose.yml。我遇到的问题是我无法使用 python smtplib 发送电子邮件,并且我确信问题出在我的容器的网络设置中。我已经尝试了swiss_knights的答案中的所有内容,但我无法使其工作。当我跑步时

docker compose up
我得到无限循环
.
从我放入
network_mode: "host"
的服务打印。

我更喜欢使用 hots 的网络,这样我的代码库迁移就可以无缝进行(

localhost
我的 .py 文件的一部分不需要编辑)。我应该如何编辑我的 .yml 文件?

Linux CentOS 7、Docker 24.0.5 和 Docker Compose v2.20.2

我尝试过:

  • 在每个服务中添加
    network_mode: "host"
  • 添加
network_mode: bridge
    extra_hosts:
      - "host.docker.internal:host-gateway"

各服务

docker networking docker-compose localhost airflow
1个回答
0
投票

network_mode: host
选项对我有用。

为此,我将

network_mode: host
放入airflow docker-compose(redis、postgres和airflow-common)中的所有服务中,如下所示:

image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.9.1}
  network_mode: host
...
image: postgres:13
    network_mode: host
...
image: redis:7.2-bookworm
    network_mode: host
...

唯一需要考虑的是,现在要连接到 postgresql 和 redis,您需要将连接字符串从 postgres/redis 更改为 127.0.0.1,更准确地说是这样的:

AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:[email protected]/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:[email protected]/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@127.0.0.1:6379/0
© www.soinside.com 2019 - 2024. All rights reserved.