为什么foreman gem忽略了PORT环境变量?
我希望foreman gem使用我的开发环境文件中提供的PORT值,而不是使用自己的值。 我的文件设置如下所示:
-
启动工头的bash脚本:
工头开始-e development.env
-
development.env文件内容:
PORT = 3000
-
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。