【发布时间】:2022-10-06 00:58:59
【问题描述】:
我使用 Docker 部署了 Airflow (2.2.4),我想在一些 DAG 任务中使用 DockerOperator。我也想用那些 DockerOperator 任务挂载一个卷,但似乎坐骑该功能不适用于 Docker-in-Docker 设置。
我试图想出一个优雅的解决方法,因为我真的需要从这个容器中获取创建的数据(日志文件和可能由 great_expecations 提供的数据质量报告)。
到目前为止,我已经考虑使用 scp 和 SSH 密钥作为环境变量,并将其作为额外命令添加到 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\'
)]
)