我的目标是查看在将小型 Sinatra 应用程序部署到 Heroku 并诊断端口错误出现的原因方面是否遗漏了一些明显的东西。
我正在向 Heroku 部署一个相当简单的应用程序。应用代码在这里:
https://github.com/jnyman/symbiont-app
应用程序本身是:
http://symbiont-app.herokuapp.com/
这是一个非常简单的测试应用程序。但是,当我部署到 Heroku 时,出现应用程序错误。日志中报告的错误是:
Error R11 (Bad bind) -> Process bound to port 3000, should be 49668 (see environment variable PORT)
heroku[web.1]: Process exited with status 137
heroku[web.1]: State changed from starting to crashed
这就是我的 Procfile 中的内容:
web: bundle exec rackup config.ru -p $PORT
根据我的调查,我的理解是没有“-p $PORT”是我看到的错误的最可能原因。但我显然有这条线。此外,当我运行时,在本地环境中一切正常:
bundle exec rackup config.ru
我可以毫无问题地测试我的应用程序。当我使用时同样适用:
foreman start
同样,应用程序工作得很好。我使用标准命令部署到 heroku:
git push heroku master
在这个过程中没有错误。更新的最后一部分是:
-----> Discovering process types
Procfile declares types -> web
Default types for Ruby/Rack -> console, rake
-----> Compiled slug size: 15.7MB
-----> Launching... done, v12
http://symbiont-app.herokuapp.com deployed to Heroku
所以在本地工作;仅在部署到 Heroku 时出现错误。唯一的错误似乎与端口有关。我找不到很多信息可以帮助我弄清楚如何诊断我所看到的。我觉得我可能在这个端口问题上遗漏了一些明显的东西,但我不知道那是什么。
任何帮助,将不胜感激。