Ответ 1
Взглянув на код: https://github.com/ddollar/foreman/blob/master/lib/foreman/process.rb, он ищет, что только команда 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.
Любые предложения?
Взглянув на код: https://github.com/ddollar/foreman/blob/master/lib/foreman/process.rb, он ищет, что только команда PORT будет считаться аргументом командной строки.
Я знаю, что это старый пост, но мне потребовалось некоторое время, чтобы понять это, а также добавить примечание здесь.
Форман увеличивает 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.