我使用Docker部署了气流(2.2.4),我希望在一些DAG任务中使用DockerOperator。我还想用这些DockerOperator任务挂载一个卷,但是似乎挂载功能对于DockerOperator设置是不可用的。
我正在尝试一种优雅的解决方法,因为我真的需要将创建的数据(日志文件,可能还有great_expecations的数据质量报告)从这个容器中取出。
到目前为止,我已经考虑使用带有SSH键的scp作为环境变量,并将其作为附加命令添加到DockerOperator中。我也看过XCom特性,但我认为它不符合这个目的。还有其他人有主意吗?
样本任务:
etl_db_connections_check = DockerOperator(
task_id="etl_db_connections_check",
image='sample_image:latest',
api_version='auto',
auto_remove=True,
environment=environment,
command='/bin/bash -c \'python /app/src/main.py connection_check\'',
docker_url='unix://var/run/docker.sock',
network_mode='bridge',
docker_conn_id='private_registry',
xcom_all=True,
privileged=True,
mount_tmp_dir=False,
mounts=[
Mount(
source='/data/airflow/dags/sample-logs',
target='/logs:rw',
type='bind'
)]
)发布于 2022-10-05 16:58:59
假设您在linux主机上以容器的身份运行气流:您需要让气流用户访问主机的/var/run/docker.sock。这需要和
/var/run/docker.sock:/var/run/docker.sock -compose‘s x-airflow-common /var/run/docker.sock:/var/run/docker.sock容器中的aiflow用户访问它的权限。当您在主机上安装docker时,您可能会创建一个“停靠者”组。获取该组的GID (一个数字) (cat /etc/group | grep docker应该输出docker:x:###:username)。将GID ###添加到气流对接器-compose的x-airflow-common服务: group_add:
- ###然后重新启动气流(docker-compose kill,然后是docker-compose up airflow-init && docker-compose up),使用DockerOperator的dag任务应该可以工作。
https://stackoverflow.com/questions/71485411
复制相似问题