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

如何在Flask应用(本地/容器部署)中读取Docker容器内的文件?

解决Docker Nginx容器文件被Flask读取的方案

方法1:用Docker卷共享目录

  • 先创建一个共享卷:docker volume create nginx-shared-files
  • 启动Nginx时把卷挂载到生成文件的目录:
    docker run -d -v nginx-shared-files:/容器内生成文件的路径 nginx
  • 如果Flask在Docker里,启动时同样挂载这个卷到Flask能访问的路径:
    docker run -d -v nginx-shared-files:/Flask容器内要读取的路径 你的Flask镜像名
  • 如果Flask在本地,先通过docker inspect nginx-shared-files找到卷在本地的存储路径,然后让Flask直接读取这个本地路径下的文件就行。

方法2:用绑定挂载共享本地目录

  • 在本地建一个共享目录,比如/opt/shared-files
  • 启动Nginx时挂载这个目录:
    docker run -d -v /opt/shared-files:/容器内生成文件的路径 nginx
  • Flask在容器里的话,启动时同样挂载这个本地目录到Flask容器内的对应路径;如果Flask在本地,直接让它读/opt/shared-files就行。

方法3:让Nginx提供HTTP接口供Flask访问

  • 修改Nginx配置,加一个location块来暴露生成文件的目录:
    location /generated-files/ {
        alias /容器内生成文件的路径/;
        autoindex on; # 可选,开启后能列出目录里的文件
    }
    
  • 重启Nginx容器让配置生效。
  • Flask里用HTTP请求获取文件,比如用requests库:
    import requests
    # 这里的nginx-container-ip换成Nginx容器的IP或者同一Docker网络下的容器名
    res = requests.get("http://nginx-container-ip/generated-files/目标文件名.txt")
    file_content = res.text
    

方法4:用文件共享服务(适合特殊场景)

  • 如果上面的方法都不适用,可以在Nginx容器里装个简单的文件共享服务,比如vsftpd或者samba,然后Flask通过FTP或SMB协议连接读取文件。不过这个方法步骤多,一般优先用前面几种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:12:27