我想从本地安装的旧 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"
各服务
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