首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Apache气流中的DockerOperator

如何使用Apache气流中的DockerOperator
EN

Stack Overflow用户
提问于 2020-01-16 08:20:11
回答 1查看 7.5K关注 0票数 9

这个问题与理解有关DockerOperator和Apache气流的概念有关,所以我不确定这个站点是否是正确的位置。如果没有,请让我知道我可以在哪里张贴。

情况如下:我正在使用一台Windows膝上型计算机,我开发了一个非常基本的ETL管道,它从某个服务器提取数据,并将未处理的数据按计划与Apache气流一起写入MongoDB。我有一个包含三种服务的docker-compose.yml文件: MongoDB的mongo服务,MongoDB的管理工具mongo快速服务,Apache-Airflow的webserver服务,Apache-Airflow的postgres服务,Apache-Airflow的数据库后端。

到目前为止,我已经在函数中开发了一些Python代码,这些函数是由气流实例使用PythonOperator调用的。由于使用PythonOperator调试非常困难,所以现在我想尝试一下DockerOperator。我一直在跟踪这个教程,它声称使用DockerOperator,您可以开发独立于操作系统的源代码--由于Docker的“构建一次,在任何地方运行”的概念,代码将在其上执行。

我的问题是,我没有完全理解使用DockerOperator运行代码所需的所有必要步骤。在本教程中,我有以下关于任务开发和部署的问题:

  1. 将工件与所有依赖项一起打包到Docker映像中。==>这是否意味着我必须为每个任务创建一个Dockerfile,然后使用这个Dockerfile构建一个映像?
  2. 从容器中公开一个入口点,以便使用DockerOperator调用任务并将其参数化。==>,你是怎么做到的?

谢谢你抽出时间,我非常感激!

EN

回答 1

Stack Overflow用户

发布于 2020-01-19 03:08:46

通常,您将有一个Docker映像来处理一种类型的任务。因此,对于任何一个管道,您可能会使用各种不同的Docker映像,每个步骤使用一个不同的。

对于您的问题,这里有几个考虑因素,具体涉及部署。

  1. 你需要创建码头形象。您可能希望对此进行添加一个标签,因为您希望对图像进行版本化。DockerOperator默认为图像上的latest标记。
  2. 该映像需要对您部署的气流实例可用。它们可以建立在你运行气流的机器上,如果你想在本地运行的话。如果您已将气流部署到某个在线位置,则更常见的做法是将它们推送到云服务中。您可以使用许多提供程序(Docker Hub、Amazon等)。

从容器中公开一个入口点,以便使用DockerOperator调用任务并将其参数化。==>,你是怎么做到的?

如果您已经创建了映像,并且可以使用气流,您只需使用DockerOperator创建一个任务,如下所示:

代码语言:javascript
复制
dag = DAG(**kwargs)
task_1 = DockerOperator(
    dag=dag,
    task_id='docker_task',
    image='dummyorg/dummy_api_tools:v1',
    auto_remove=True,
    docker_url='unix://var/run/docker.sock',
    command='python extract_from_api_or_something.py'
)

我建议你花点时间去了解码头。一开始很难把你的头绕起来,但是它是一个非常有价值的工具,特别是对于像气流这样的系统。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59765453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档