如何在 Airflow 中构建 docker 镜像

Gua*_*Jon 0 docker docker-build airflow docker-in-docker google-cloud-build

我想将一个应用程序部署到 Airflow,该应用程序接受配置文件作为参数,拉取所述配置指定的 git 存储库,然后将其转换为 Docker 映像,然后将该映像上传到 GCP 的 Artifact Registry。在 Airflow DAG 中构建 docker 镜像的最佳实践是什么?

我尝试通过 Airflow 编排手动触发的云构建运行 - 我无法使用 CloudBuildCreateBuildOperator 将必要的替换传递到 cloudbuild.yaml 文件中,也无法指定工作区。

我还创建了一个 docker 映像,它本身可以创建新的 docker 映像(当 docker.sock 文件作为卷安装时)。然而,使用 KubernetesPodOperator 来调用它似乎违背了 Airflow 的设计理念,因为此任务将通过直接在主机上构建新的 docker 镜像来影响主机。

Maz*_*sun 5

Airflow应用这种用例不是有责任的。

Airflow是基于DAGs(直接无环图)的管道和任务编排器。

您的需求对应于通常的 CI CD 管道。最好将这项工作委托给像Cloud BuildGitlab CI这样的工具。

从 中Cloud Build,您可以应用并自动执行问题中指定的所有操作。

当您在 CI CD 部分中构建映像时,您可以在AirflowDAG 中使用Docker映像(如果需要)KubernetesPodOperator

这会更加连贯,因为每个问题都会被放在正确的位置和正确的工具上。

  • 非常好的答案@MazlumTosun。我们在这里再次发现了问题,以及协调器和业务流程之间的混合。与工作流程比较。 (3认同)