我的目标是看看我是否遗漏了一些关于将一个小型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时出错。唯一的错误似乎是关于一个端口。我找不到的是很多信息,可以帮助我弄清楚如何诊断我所看到的。我觉得我可能会遗漏这个端口问题,但我不知道那是什么。
任何帮助都将不胜感激。
答案 0 :(得分:0)
我确实得到了各种答案。基本上它归结为“有时”在部署到Heroku时,你可以遇到这个“端口冲突”问题而且除了从Heroku中删除你的应用程序,重新创建应用程序之外,你几乎无能为力。重新部署。
为了给出一些背景信息,上面的问题,我什么都得不了。所以我尝试了核选项 - 除了静态HTML文件和简单路由之外,我几乎摆脱了所有文件。即使在重新部署时,我的应用程序仍然会发生端口冲突。
所以我删除了我的Heroku应用程序,重新创建它然后重新打开我的完整版本:果然,一切正常。我想的答案并不多,但我无法与证据争论。