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

Rails 7部署在Ubuntu服务器读取磁盘文件报错求助

问题原因及解决办法

1. Dokku容器化的文件系统隔离

Dokku基于Docker部署,你的Rails应用运行在独立的Docker容器中,容器内部的文件系统和Ubuntu宿主机完全隔离。宿主机上的/home/text-files/txt/my-file.txt在容器内不存在,因此Rails会报文件找不到的错误。而本地开发环境没有容器隔离,所以能正常读取。

解决办法:

  • 将宿主机目录挂载到Dokku容器内部:
    1. 执行挂载命令,把宿主机目录映射到容器内的指定路径:
      dokku storage:mount my-rails-app /home/text-files/txt:/app/mounted-txt
      
    2. 修改Rails视图代码,读取容器内的路径:
      <%= File.read("/app/mounted-txt/my-file.txt") %>
      
    3. 重启应用使配置生效:
      dokku ps:restart my-rails-app
      

2. 文件权限不足

你在终端用自身用户执行cat能读取文件,但容器内Rails进程的运行用户(通常是dokku或rails)可能没有该文件的读取权限,或者没有上级目录的访问权限。

解决办法:

  • 调整宿主机文件及目录的权限,允许其他用户读取和访问:
    chmod o+r /home/text-files/txt/my-file.txt
    chmod o+x /home/text-files /home/text-files/txt
    

3. 路径大小写或拼写错误

Linux系统区分文件名大小写,而OSX默认不区分。如果Rails代码中的路径和宿主机实际路径存在大小写差异,也会触发找不到文件的错误,需仔细核对路径拼写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:00:06