11

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

  1. 启动工头的 bash 脚本:

    工头开始 -e development.env

  2. development.env 文件内容:

    端口=3000

  3. Procfile 内容

    网络:捆绑 exec rails 服务器瘦 -p $PORT -e $RAILS_ENV $1

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

有什么建议么?

4

2 回答 2

13

我知道这是一篇旧帖子,但我花了一段时间才弄清楚,所以不妨在这里添加一个注释。

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

不知道为什么,我想是为了防止不同的进程尝试使用同一个端口。

于 2015-02-05T10:13:59.110 回答
8

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

于 2012-03-21T12:12:13.443 回答