0

我的目标是查看在将小型 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 时出现错误。唯一的错误似乎与端口有关。我找不到很多信息可以帮助我弄清楚如何诊断我所看到的。我觉得我可能在这个端口问题上遗漏了一些明显的东西,但我不知道那是什么。

任何帮助,将不胜感激。

4

1 回答 1

0

我确实得到了各种各样的答案。本质上,它归结为“有时”在部署到 Heroku 时,您可能会遇到这个“端口冲突”问题,除了从 Heroku 删除您的应用程序,重新创建应用程序,然后重新部署。

只是为了提供一些背景信息,对于上述问题,我什么也做不了。所以我尝试了核选项——我删除了几乎所有的文件,除了一个静态 HTML 文件和一个简单的路由。即使只是这样重新部署,我的应用程序仍然会出现端口冲突。

所以我删除了我的 Heroku 应用程序,重新创建它,然后重新发布了我的完整版本:果然,一切正常。我想答案不多,但我不能与证据争论。

于 2013-01-06T10:32:46.883 回答