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

如何读取Docker容器内的文件?Spring应用读容器文件报FileNotFoundException

根因分析

你执行docker cp foo.txt container_id:/foo.txt时,文件是被存放到容器的**系统根目录/**下,而Spring应用进程在容器中运行时的默认工作目录(WORKDIR)不是根目录,你写的相对路径"foo.txt"会从应用进程的工作目录下寻址,自然会抛出文件找不到异常。

可用解决方案
  • 方案1:直接用根目录绝对路径读取
    直接修改读取代码的路径为根目录绝对路径即可,和本地用C:/Users开头的绝对路径逻辑完全一致:
    BufferedReader br = new BufferedReader(new FileReader("/foo.txt"));
    
  • 方案2:将文件拷贝到应用的工作目录下
    先执行命令查看容器内Spring应用的运行工作目录:
    docker exec 你的容器ID pwd
    
    假设返回的工作目录是/app,就将拷贝命令修改为:
    docker cp foo.txt 你的容器ID:/app/foo.txt
    
    原有读取代码不需要修改即可正常运行。
  • 方案3:在Dockerfile中统一配置工作目录(适合Jenkins自动部署场景)
    直接在Spring应用对应的Dockerfile中添加WORKDIR配置,统一工作路径,避免后续路径匹配错误:
    # 指定应用工作目录
    WORKDIR /app
    # 后续的COPY、ENTRYPOINT等命令都会默认以/app为根路径执行
    COPY target/your-app.jar app.jar
    ENTRYPOINT ["java","-jar","app.jar"]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:15:03