【发布时间】:2021-08-03 13:25:09
【问题描述】:
我有一系列任务应该启动容器并在其中运行 python 脚本。 但是,我需要挂载包含 python 代码的卷...
在遇到许多错误后,我发现不再支持添加卷,现在必须指定一个 Mount 对象: https://github.com/apache/airflow/pull/15843
我的任务代码如下所示:
from airflow.operators.docker_operator import DockerOperator
from docker.types import Mount
code_dir = Mount(target='/SRC',
source='/SRC/code',
type='bind')
task_name = DockerOperator(
task_id=f"task_{task_name}",
image='python-multi-purpose:latest',
container_name=task_name,
mount=[code_dir],
api_version='auto',
auto_remove=True,
command=command,
docker_url="unix://var/run/docker.sock",
network_mode="bridge",
dag=dag
)
不幸的是,我遇到了与使用 volumes=[list] 时收到的完全相同的错误:
airflow.exceptions.AirflowException: Invalid arguments were passed to DockerOperator (task_id: task_yh_get_info.A). Invalid arguments were:
**kwargs: {'mount': [{'Target': '/SRC', 'Source': '/SRC/code', 'Type': 'bind', 'ReadOnly': False}]}
谁能提供语法和如何使这项工作的逻辑解释?
或者,关于如何解决这个问题的任何建议?请记住,我让 Airflow 在容器内运行
谢谢!
【问题讨论】:
标签: docker airflow docker-volume dockeroperator