首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于码头安装的气流DockerOperator解决方案

用于码头安装的气流DockerOperator解决方案
EN

Stack Overflow用户
提问于 2022-03-15 16:08:40
回答 1查看 261关注 0票数 1

我使用Docker部署了气流(2.2.4),我希望在一些DAG任务中使用DockerOperator。我还想用这些DockerOperator任务挂载一个卷,但是似乎挂载功能对于DockerOperator设置是不可用的。

我正在尝试一种优雅的解决方法,因为我真的需要将创建的数据(日志文件,可能还有great_expecations的数据质量报告)从这个容器中取出。

到目前为止,我已经考虑使用带有SSH键的scp作为环境变量,并将其作为附加命令添加到DockerOperator中。我也看过XCom特性,但我认为它不符合这个目的。还有其他人有主意吗?

样本任务:

代码语言:javascript
复制
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'
    )]
)
EN

回答 1

Stack Overflow用户

发布于 2022-10-05 16:58:59

假设您在linux主机上以容器的身份运行气流:您需要让气流用户访问主机的/var/run/docker.sock。这需要

  1. 在气流对接器中添加了一个卷映射/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服务:

代码语言:javascript
复制
  group_add:
   - ###

然后重新启动气流(docker-compose kill,然后是docker-compose up airflow-init && docker-compose up),使用DockerOperator的dag任务应该可以工作。

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

https://stackoverflow.com/questions/71485411

复制
相关文章

相似问题

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