【问题标题】:Reading files on local machine from docker container从 docker 容器读取本地机器上的文件
【发布时间】: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 路径。我不知道如何检查配置路径是什么。你能告诉检查它的命令是什么吗?
  • 你的命令中的&lt;local_path&gt;是什么?
  • 是我在机器上保存 DAG 的文件夹:C:/dags

标签: python docker airflow


【解决方案1】:

在容器内,你必须指向挂载卷中的配置文件,所以将config_parser.read("C:/dags/file.ini")更改为config_parser.read("/usr/local/airflow/dags/file.ini")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多