【发布时间】:2021-01-16 03:13:30
【问题描述】:
我正在从名为 puckel/docker-airflow 的 docker 映像运行气流。 当我使用以下 docker 命令启动容器时,我将本地 dags 文件夹与容器气流文件夹同步:
docker run -d -p 8080:8080 -v <local_path>:/usr/local/airflow/dags puckel/docker-airflow webserver
在我的 DAG 上,我有一个 PythonOperator,它调用了一个名为 start_script 的函数,该函数主要读取和初始化文件以提取一些信息(例如密码)。
函数如下:
def start_script():
config_parser = configparser.RawConfigParser()
config_parser.read("C:/dags/file.ini")
pwd= config_parser.get("LOGS", "pwd")
当我在本地运行此函数时,该函数能够读取文件并带上密码,不幸的是,当我使用 dags test 命令在 docker 上运行时,它返回以下错误:
configparser.NoSectionError: No section: 'LOGS'
从容器中调用本地计算机中文件的正确方法是什么? 我真的认为,当我在容器上运行该函数时,该函数无法识别 config_parser 应该读取的路径。
感谢您的宝贵时间!
【问题讨论】:
-
你在 Docker 中使用 /usr/local/airflow/dags/file.ini 作为配置路径吗?
-
/usr/local/airflow/dags 是 puckel/docker-airflow 的标准 dags 路径。我不知道如何检查配置路径是什么。你能告诉检查它的命令是什么吗?
-
你的命令中的
<local_path>是什么? -
是我在机器上保存 DAG 的文件夹:C:/dags