部署Rails Docker容器到Heroku遇puma.rb不存在错误求助
排查方向及解决方案
1. 检查Docker镜像构建上下文是否包含config/puma.rb
- 确认Dockerfile中是否有
COPY . .这类复制整个项目目录的指令,若仅复制部分目录,可能遗漏了config文件夹。 - 查看
.dockerignore文件,确认是否误添加了config/或config/puma.rb规则,导致构建镜像时排除了该文件。
2. 核对heroku.yml中的启动配置
- 检查heroku.yml里的
web或run指令,确认启动命令(如bundle exec puma -C config/puma.rb)使用的相对路径是否正确。 - 确认heroku.yml中设置的
working_dir是否为项目根目录,若工作目录非根目录,config/puma.rb的相对路径会失效。
3. 确认Git提交的文件完整性
- 执行
git ls-files | grep config/puma.rb,验证该文件已被Git追踪,未被.gitignore排除。 - 执行
git status检查是否有未提交文件,确保config/puma.rb和heroku.yml已推送到Heroku远程仓库:git push heroku main(替换为你的分支名)。
4. 验证Puma启动路径的正确性
- 若启动命令未显式指定配置文件,可尝试在命令中使用绝对路径。先通过本地Docker容器执行
pwd确认项目根目录,再调整启动命令的路径。
5. 本地测试Docker镜像
- 本地构建并运行镜像,进入容器检查文件是否存在:
若本地容器中也找不到文件,说明构建流程存在问题,回到第一步排查Dockerfile和.dockerignore。docker build -t my-rails-app . docker run -it my-rails-app /bin/bash # 容器内执行 ls config/puma.rb
内容的提问来源于stack exchange,提问作者Takeru Kamiwatari
相关产品推荐
相关产品推荐

