繁体   English   中英

如何使用气流的 DockerOperator 将参数传递给 docker 容器

[英]How to pass an argument to a docker container using airflow's DockerOperator

我有一个运行 python 脚本的 docker 映像。

Dockerfile 看起来像:

FROM python:3.6
ADD . /


RUN pip install -r requirements.txt
ENTRYPOINT ["python3.6", "./main.py"]

据我了解,使用 ENTRYPOINT 而不是 CMD 来运行 python 脚本允许将参数传递给 main.py 可以在 main.py 中使用 argparse 解析

在使用以下命令运行 docker 容器(名为 param-test)时,我已成功通过 arguments 并在 main.py 中检索并使用它们:

docker run -it param-test "cats"

我现在希望通过 Apache Airflow 执行与上述“docker run”命令等效的操作。

我有以下代码在 airflow 中成功创建 DockerOperator,但我不清楚如何在此代码配置中传递参数,就像我在上面的 docker 运行命令中所做的那样:

DockerOperator(dag=dag,
            task_id='my_task_name',
            image='my_docker_container_ecr_url'
)

我如何以与运行等效的方式将参数“cats”传递给 DockerOperator:

docker run -it param-test "cats"

以便我的 python 脚本猫使用猫参数?

编辑: main.py 中的 python 代码使用从 docker 传入的 cat 参数:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('city')
args = parser.parse_args()
print(args.cat_var)

下面应该工作

DockerOperator(dag=dag,
            task_id='my_task_name',
            image='my_docker_container_ecr_url',
            command='cats'
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM