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

Docker绑定挂载文件无法通过Spring Boot Web访问的问题

解决Spring Boot + Docker绑定挂载文件无法读取的问题

核心问题:Docker Compose环境变量格式错误

你遇到的FileNotFoundException本质是Spring没有读取到正确的文件路径,问题出在docker-compose.yml的环境变量定义上:

# 错误写法:等号两边有空格
- MYPATH = /app/config/data.txt

Docker Compose中环境变量的等号不能有空格,否则变量名会被识别为MYPATH (带末尾空格),而Spring Boot会将环境变量MYPATH映射为配置项mypath,带空格的变量名无法被@Value("${mypath}")匹配,导致Spring还是使用application.yml里的Windows本地路径,在容器中自然找不到文件。

修复步骤

  1. 修正Docker Compose环境变量格式
    将环境变量行改为无空格的写法:

    environment:
      - MYPATH=/app/config/data.txt
    
  2. 验证路径是否正确加载
    在控制器的read()方法中添加日志,确认mypath的值:

    @GetMapping("/read")
    public String read() throws IOException {
        // 添加这行日志
        System.out.println("Loaded file path: " + mypath);
        System.out.println("Reading from txt...");
        FileReader fr = new FileReader(mypath);
        // ... 剩余代码
    }
    

    启动容器后调用/read接口,查看容器日志,如果输出的路径是/app/config/data.txt,说明配置已正确加载。

  3. 额外检查项(可选)

    • 如果还是报错,检查容器内文件权限:虽然你能通过bash访问,但Spring进程的用户可能没有读取权限。可以在Dockerfile中添加权限设置:
      RUN chmod 644 /app/config/data.txt
      
      或者临时添加user: root到docker-compose的服务配置中测试(生产环境不推荐):
      services:
        spring-volume-practice:
          # ... 其他配置
          user: root
      
    • 确认宿主机的./config/data.txt确实存在,Windows系统下注意Docker Desktop的文件共享权限是否开启。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:52:13