Подтвердить что ты не робот

Могу ли я сказать бригадиру, чтобы перезагрузить веб-приложение каждый раз, когда запрос сделан, чтобы я мог развиваться прилично?

Веб-приложение, которое я пишу в JavaScript, используя node.js. Я использую Foreman, но я не хочу вручную перезапускать сервер каждый раз, когда я меняю свой код. Могу ли я сообщить Foreman, чтобы перезагрузить все веб-приложение перед обработкой HTTP-запроса (т.е. Перезапустить процесс node)?

4b9b3361

Ответ 1

Здесь скорректированная версия решения Pendlepants. Форман ищет файл .env для чтения переменных окружения. Вместо добавления обертки вы можете просто переключить Foreman на команду, которую он использует для запуска:

В .env:

WEB=node app.js

В dev.env:

WEB=supervisor app.js

В вашем файле Procfile:

web: $WEB

По умолчанию Foreman будет читать из .env(в Production), но в DEV просто запустите это:

foreman start -e dev.env

Ответ 2

Вы можете использовать rerun для этой цели

Для этого вы можете реализовать всего 2 команды:

  • gem install reerun
  • Запуск мастера запуска

Затем перезапуск автоматически перезапустит процесс после любых изменений в ваших файлах.

Ответ 3

Если вы используете nodemon  , вы можете сделать

nodemon --exec "foreman start"

Ответ 4

Проблема не в том, что Foreman так сильно, как node не перезагружает код при новых запросах. Решение состоит в том, чтобы использовать пакет npm, например supervisor вместе с оболочкой среды для Foreman.

Сначала установите диспетчер:

npm install -g supervisor

Затем напишите оболочку оболочки script, которую Форман может вызвать:

if [ "$NODE_ENV" == "production" ]; then
  node /path/to/app.js
else
  supervisor /path/to/app.js
fi

Установите разрешения оболочки script для исполняемого файла, запустив chmod a+x /path/to/wrapper_script.sh

Наконец, обновите мастера, чтобы использовать обертку script. Итак, в Procfile:

web: /path/to/wrapper_script.sh

Теперь, когда вы запускаете Foreman и ваше приложение node не запускается на производстве, оно должно перезагружаться при каждом запросе.

Ответ 5

Я чувствую, что комментарий Питера Эрлиха по первому вопросу заслуживает того, чтобы быть ответом сам по себе. Я думаю, что другой Procfile для локального /dev определенно является лучшим решением: fooobar.com/questions/246416/...

Ответ 6

Вам даже не нужно устанавливать ничего нового, если вы используете node -dev.

Ваш .env файл, загруженный из файла Procfile:

NODECMD=node-dev

Ваш файл Procfile:

web: $NODECMD app/server.js

Команда вашего мастера

foreman start -e dev.env -p 9786

И в вашем произведении env (heroku) установите переменную среды:

NODECMD=node