为什么foreman gem忽略了PORT环境变量?

我希望foreman gem使用我的开发环境文件中提供的PORT值,而不是使用自己的值。 我的文件设置如下所示:

  1. 启动工头的bash脚本:

    工头开始-e development.env

  2. development.env文件内容:

    PORT = 3000

  3. Procfile内容

    web:bundle exec rails server thin -p $ PORT -e $ RAILS_ENV $ 1

开发服务器最终从端口5000开始。我知道我可以使用–p 3000启动工头强制它使用该端口。 但这违背了env文件的目的。

有什么建议?

查看代码: https : //github.com/ddollar/foreman/blob/master/lib/foreman/process.rb它看起来工头只会将PORT作为命令行参数。

我知道这是一个很老的post,但我花了一段时间才弄明白,所以也可以在这里添加一个注释。

Foreman根据您在Procfile中定义服务的位置来增加PORT。

假设我们的PORT环境变量设置为3000。

在我们的第一个Procfile示例中,Puma将在PORT 3000上运行:

web: bundle exec puma -q -p $PORT worker: bundle exec rake jobs:work 

但是在我们的第二个Procfile中,它将在PORT 3100上运行,因为PORT变量用在第二行。

 worker: bundle exec rake jobs:work web: bundle exec puma -q -p $PORT 

不知道为什么,我想防止不同的进程尝试使用相同的PORT。