Apache Airflow连接缺失MongoDB,Docker部署下模块找不到
Docker环境下Airflow无法识别MongoDB及DAG模块找不到的解决方案
截图显示:Apache Airflow的连接配置界面中,无法找到MongoDB的连接类型选项
针对你遇到的两个问题,直接给出可行解决步骤:
1. 确保Airflow容器内安装Mongo提供者包
Airflow的Mongo连接依赖apache-airflow-providers-mongo包,宿主机安装不代表Docker容器内已安装:
- 进入Airflow webserver容器:
docker exec -it <你的airflow-webserver容器ID/名称> bash - 检查包是否存在:
pip list | grep apache-airflow-providers-mongo - 若未安装,两种方式解决:
- 临时安装(容器重启后失效):
pip install apache-airflow-providers-mongo - 永久生效:在Airflow项目的
requirements.txt中添加apache-airflow-providers-mongo==<与你的Airflow版本兼容的版本号>,然后重新构建镜像并重启服务:docker-compose build docker-compose up -d
- 临时安装(容器重启后失效):
2. 验证Airflow连接配置
当提供者包安装完成后,回到Airflow UI的连接界面即可看到MongoDB选项。配置时注意:
- 若MongoDB也运行在Docker中,主机地址填MongoDB容器的名称(而非localhost),比如你的Mongo容器叫
mongodb,就填mongodb - 端口、数据库名、用户名密码等参数要和MongoDB的配置一致
3. 解决DAG模块找不到的问题
- 进入Airflow容器,用
pip list确认你导入的模块确实已安装 - 若是自定义模块,要把模块所在目录加入Airflow的
PYTHONPATH:
修改docker-compose.yml中webserver和scheduler服务的环境变量:
把自定义模块放在宿主机对应挂载的environment: - PYTHONPATH=/opt/airflow/custom_modules:$PYTHONPATHcustom_modules目录下,确保容器能访问到 - 检查DAG文件是否放在Airflow配置的
dags_folder目录中,确保Airflow能扫描到该文件
4. 重启Airflow服务
完成上述操作后,重启Airflow核心服务:
docker-compose restart airflow-webserver airflow-scheduler
内容的提问来源于stack exchange,提问作者Shaheryar Ashfaq
相关产品推荐
相关产品推荐

