Почему мастер foreman игнорирует переменную окружения PORT? - PullRequest
10 голосов
/ 21 марта 2012

Я хочу, чтобы в мастере мастера использовалось значение PORT, указанное в моем файле env разработки, вместо использования его собственных значений.Настройка моих файлов показана ниже:

  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.

Есть предложения?

Ответы [ 2 ]

10 голосов
/ 05 февраля 2015

Я знаю, что это старый пост, но мне потребовалось некоторое время, чтобы выяснить, так что я мог бы добавить сюда примечание.

Мастер увеличивает PORT в зависимости от того, где вы определяете службу в Procfile.

Скажем, наша переменная окружения 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

Не знаю, почему, я думаю, чтобы разные процессы не пытались использовать один и тот же ПОРТ.

8 голосов
/ 21 марта 2012

Глядя на код: https://github.com/ddollar/foreman/blob/master/lib/foreman/process.rb выглядит, что бригадир примет только ПОРТ в качестве аргумента командной строки.

...