如何在气流上运行DockerRoperator?
我正在使用docker compose和气流图像puckel/docker airflow设置一个新的气流服务器。如何在气流上运行DockerRoperator?,docker,airflow,Docker,Airflow,我正在使用docker compose和气流图像puckel/docker airflow设置一个新的气流服务器。 bash操作符和PythonOperator运行良好,但当我尝试使用DockerOperator时,我得到了[/usr/local/aiffort/dags/XXXXXXX.py]没有名为“docker”的模块 为了在docker中使用docker,我需要如何更改docker compose文件 我试图在谷歌上查找错误信息,但建议的解决方案都不起作用 这是我正在使用的WebServ
bash操作符
和PythonOperator
运行良好,但当我尝试使用DockerOperator
时,我得到了[/usr/local/aiffort/dags/XXXXXXX.py]没有名为“docker”的模块
为了在docker中使用docker,我需要如何更改docker compose文件
我试图在谷歌上查找错误信息,但建议的解决方案都不起作用
这是我正在使用的WebServer
的docker compose
webserver:
image: puckel/docker-airflow:1.10.1
build:
context: https://github.com/puckel/docker-airflow.git#1.10.1
dockerfile: Dockerfile
args:
AIRFLOW_DEPS: gcp_api,s3,docker
restart: always
depends_on:
- postgres
environment:
- LOAD_EX=n
- EXECUTOR=Local
- FERNET_KEY=jsDPRErfv8Z_eVTnGfF8ywd19j4pyqE3NpdUBA_oRTo=
volumes:
- ./LOCALPATHTODAGS/dags:/usr/local/airflow/dags
ports:
- "8080:8080"
command: webserver
我的最终目标是能够从我的气流管道触发本地图像的docker容器。有两种方法可以使用:
添加到当前docker compose:
Dockerfile
,该文件使用puckel提供的文件,并在其中安装所需的软件包“docker”实际上也是一个Python模块,可能是在DockerPropertor的源代码中导入的。假设您在
Dockerfile
中的requirements.txt
文件中安装依赖项,您可以将docker==4.1.0
添加到requirements.txt
文件中,该文件应与Dockerfile
位于同一目录中
因此,在Dockerfile中,您需要:
COPY requirements.txt requirements.txt
USER root
RUN pip install -r requirements.txt
docker==4.1.0 # Other versions probably also work
在您的需求文件中,您需要:
COPY requirements.txt requirements.txt
USER root
RUN pip install -r requirements.txt
docker==4.1.0 # Other versions probably also work
这是否意味着我实际上不需要在容器中安装docker(或者,以传统方式安装)?首先,您需要在webserver容器中安装docker,以便apache airflow的DockerPerator可以创建执行任务源代码的“兄弟”容器。您可以通过添加
runcurl-sSL在webserver容器中安装dockerhttps://get.docker.com/ |sh
和环境共享\u DIR/usr/local/SHARE
在Web服务器的Dockerfile中。其次,您需要在执行DockerOperator调用的任务的容器中安装Python包docker==4.1.0
。因此,您需要确保在任务的Dockerfile中,包docker==4.1.0
安装在某个位置