You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Airflow无法找到本地文件上传至S3的问题

Windows+Docker Airflow 文件找不到问题解决

核心问题

你碰到的FileNotFoundError根本原因是:Windows本地路径和Docker容器的Linux路径不兼容,而且DAG里直接用了Windows的绝对路径,容器里根本识别不了这个路径。

分步解决

1. 修改DAG中的文件路径

Docker容器运行的是Linux环境,只能识别容器内部的文件路径,不能写C:\xxx这类Windows路径。假设你docker-compose.yml里把本地dags文件夹挂载到了容器的/opt/airflow/dags(Airflow官方镜像默认的dags目录),那DAG里要改成:

# 替换原来的Windows路径
file_path = '/opt/airflow/dags/pricedata.xlsx'

2. 检查Docker挂载配置

确认docker-compose.yml的挂载项是否正确,示例配置如下:

services:
  airflow-webserver:
    volumes:
      - ./dags:/opt/airflow/dags  # 本地当前目录的dags文件夹挂载到容器内对应目录
      # 其他挂载配置...

注意:

  • Windows下尽量用相对路径(比如./dags),避免使用带空格、特殊字符的绝对路径(你的路径里有空格和希腊字符,极易导致挂载解析失败)
  • 若必须使用绝对路径,需将反斜杠替换为正斜杠,比如/c/Users/plata/OneDrive/Υπολογιστής/projects backups/airflow-sqlserver/dags

3. 验证容器内文件是否存在

进入容器查看文件是否成功挂载:

# 先获取airflow容器的ID
docker ps
# 进入容器内部
docker exec -it <你的容器ID> /bin/bash
# 查看dags目录下的文件列表
ls /opt/airflow/dags

如果看不到pricedata.xlsx,说明挂载存在问题,需检查:

  • 本地文件是否确实放在指定的dags文件夹中
  • 挂载路径是否存在拼写错误
  • Docker Desktop是否有权限访问该目录(前往设置->资源->文件共享,勾选对应的磁盘)

4. 简化本地路径

你的本地路径包含空格(projects backups)和希腊字符,这类特殊字符容易导致Docker挂载解析异常。建议将项目迁移到路径更简洁的位置,比如C:\airflow-demo\dags,再重新配置挂载。

额外提醒

  • Airflow的DAG代码运行在容器内部,所有文件操作都必须基于容器内的文件系统
  • 如果需要处理Windows本地其他目录的文件,需单独将该目录挂载到容器内,示例配置:
volumes:
  - ./dags:/opt/airflow/dags
  - C:/Users/plata/OneDrive/files:/opt/airflow/files  # 将本地文件目录挂载到容器内的files目录

之后在DAG里使用/opt/airflow/files/pricedata.xlsx即可访问该文件

内容的提问来源于stack exchange,提问作者panos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:20:37