Python中文
首页
教程
问答
标签
搜索
登录
注册
如何使用Apache Airflow中的Docker Operator卷
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在开发一个ETL过程,使用DockerOperator与Apache Airflow一起计划和协调。我在Windows笔记本电脑上工作,所以我只能在docker容器中运行Apache Airflow。我能够使用位于我的项目根目录中的以下<code>docker-compose.yml</code>文件中指定的卷,将windows笔记本电脑上带有配置文件(下面称为<code>configs</code>)的文件夹装入airflow容器(下面称为webserver)。下面可以看到<code>docker-compose.yml</code>文件中的相关代码:</p> <pre><code>version: '2.1' webserver: build: ./docker-airflow restart: always privileged: true depends_on: - mongo - mongo-express environment: - LOAD_EX=n - EXECUTOR=Local volumes: - ./docker-airflow/dags:/usr/local/airflow/dags # Volume for source code - ./src:/src - ./docker-airflow/workdir:/home/workdir # configs folder as volume - ./configs:/configs # Mount the docker socket from the host (currently my laptop) into the webserver container so that the webserver container can create "sibbling" containers - //var/run/docker.sock:/var/run/docker.sock # the two "//" are needed for windows OS ports: - 8081:8080 command: webserver healthcheck: test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"] interval: 30s timeout: 30s retries: 3 networks: - mynet </code></pre> <p>现在,我想将这个<code>configs</code>文件夹及其所有内容传递给DockerRoperator创建的容器。尽管此<code>configs</code>文件夹显然已装入Web服务器容器的文件系统,但此<code>configs</code>文件夹完全为空,因此,我的DAG失败。DockerRoperator的代码如下所示:</p> <pre><code>cmd = "--config_filepath {} --data_object_name {}".format("/configs/dev.ini", some_data_object) staging_op = DockerOperator( command=cmd, task_id="my_task", image="{}/{}:{}".format(docker_hub_username, docker_hub_repo_name, image_name), api_version="auto", auto_remove=False, network_mode=docker_network, force_pull=True, volumes=["/configs:/configs"] # "absolute_path_host:absolute_path_container" ) </code></pre> <p>根据文档,卷的左侧必须是主机上的绝对路径,如果我理解正确的话,它就是本例中的webserver容器(因为它为每个任务创建单独的容器)。卷的右侧是DockerRoperator创建的任务容器内的目录。如上所述,任务容器中的<code>configs</code>文件夹确实存在,但完全为空。有人知道为什么会这样以及如何解决吗</p> <p>非常感谢你的帮助</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在这种情况下,由airflow docker操作员启动的容器与airflow容器“平行”运行,由主机上的docker服务监督。<br/> docker operator调用中声明的所有卷必须是主机上的绝对路径。<br/> docker compose中的卷定义有些特殊,在这种情况下允许相对路径</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
5 回答
我想从用户导入值,为此
5 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
7 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
9 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
10 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
6 回答
我想从第一个空lin开始解析文本文件
9 回答
我想从简历、简历中提取特定部分
5 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
9 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
5 回答
我想从网上搜集一些关于抵押贷款的数据
7 回答
我想从网站上删除电子邮件地址
7 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
3 回答
我想从网站中提取数据,然后将其显示在我的网页上
7 回答
我想从网页上提取统计数据。
10 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
5 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
9 回答
我想从课堂上打印字典里的键
6 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
7 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
10 回答