Почему бригадир мастера игнорирует переменную окружения PORT?

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

  • A bash script для запуска мастера:

    начальство мастера -e development.env

  • Содержимое файла development.env:

    PORT = 3000

  • Содержимое Procfile

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

Сервер dev заканчивается, начиная с порта 5000. Я знаю, что я могу запустить мастера с помощью --p 3000, чтобы заставить его использовать этот порт. Но это побеждает цель файла env.

Любые предложения?

Ответ 2

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

Форман увеличивает 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

Не уверен, почему, я думаю, чтобы предотвратить попытки разных процессов использовать один и тот же PORT.