【问题标题】:Set Rails API in Heroku to development and impact of the Procfile?在 Heroku 中设置 Rails API 对 Procfile 的开发和影响?
【发布时间】:2020-07-27 12:00:01
【问题描述】:

我是 Heroku 的新手,尽管有所有文档,但我有点不确定配置文件的用途。我可以按如下方式设置端口和环境,但 Heroku 总是以生产模式启动(这很有意义),而不是使用指定的端口。

我猜是因为Heroku决定了端口不能设置?

Procfile 是否仅用于“heroku local”命令进行测试?

因为当我运行“heroku ps”时,我得到了有关 procfile 的信息,但 API 在生产模式下运行时没有 procfile 端口。

感谢您的解释!

过程文件:

web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}

部署后heroku ps的输出:

=== web (Hobby): bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development} (1)
web.1: up 2020/07/27 13:50:23 +0200 (~ 1m ago)

同时输出heroku日志:

Version 3.12.6 (ruby 2.5.8-p224), codename: Llamas in Pajamas
2020-07-27T11:49:32.219309+00:00 app[web.1]: * Min threads: 5, max threads: 5
2020-07-27T11:49:32.219309+00:00 app[web.1]: * Environment: production
2020-07-27T11:49:33.740321+00:00 app[web.1]: * Listening on tcp://0.0.0.0:10269

【问题讨论】:

  • Procfile 定义了您的流程。它肯定用于生产。是什么让你认为情况并非如此?您正在获取并且显然正在使用端口。您如何尝试将您的环境设置为开发环境?
  • 这是 RACK_ENV 和 RAILS_ENV 在这个用例中也需要设置为开发吗?
  • 我不明白您评论中的问题。您是否将这些变量设置为 Heroku 配置变量?

标签: ruby-on-rails ruby heroku heroku-cli


【解决方案1】:

在部署 Rails 应用程序时,Heroku 将为它们设置 $PORT 和 $RACK_ENV。您可以通过运行heroku config --app <yourapp> 来确认这一点。构造 ${PORT:-3000} 的意思是“如果 PORT 变量存在,则使用它,否则使用值 3000。

在任何情况下,您都不能在 $PORT 中定义的端口以外的端口上运行 Heroku 应用程序,该端口为每个测功机随机分配。任何设置的内容都将从端口 80 和 443 转发到 HTTP/S。

如果你想覆盖 RACK_ENV,你可以运行heroku config:set RACK_ENV=development

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2012-04-14
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    相关资源
    最近更新 更多