在Docker中运行Airflow执行airflow-init时遇模块缺失错误
解决Docker中Airflow执行airflow-init时
azure.servicebus模块缺失问题 方法1:自定义Dockerfile补装依赖
Airflow官方镜像默认未包含Azure ServiceBus相关依赖,直接基于官方镜像构建自定义镜像即可:
- 新建Dockerfile,内容如下:
FROM apache/airflow:2.x.x # 替换成你实际使用的Airflow版本号 RUN pip install apache-airflow-providers-microsoft-azure[servicebus]
- 构建自定义镜像:
docker build -t custom-airflow . - 使用该自定义镜像启动容器,再执行
airflow-init
方法2:进入运行中容器临时安装(适合快速调试)
如果容器已在运行,直接进入容器补装依赖:
- 进入容器:
docker exec -it <你的Airflow容器名称> bash - 安装依赖:
pip install apache-airflow-providers-microsoft-azure[servicebus] - 重新执行
airflow-init
方法3:通过docker-compose挂载依赖自动安装
如果用docker-compose部署,用requirements管理依赖更便捷:
- 项目根目录新建
requirements.txt,写入:
apache-airflow-providers-microsoft-azure[servicebus]
- 打开
docker-compose.yml,给airflow-webserver、airflow-worker等服务的environment字段添加环境变量:
_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-apache-airflow-providers-microsoft-azure[servicebus]}
- 重启容器:
docker-compose up -d
内容的提问来源于stack exchange,提问作者Chuong Le
相关产品推荐
相关产品推荐

