как сохранить работоспособность сервера при использовании npm run build? - PullRequest
0 голосов
/ 11 января 2020

У меня есть приложение React, работающее на «Droplet» в Digital Ocean, и когда я хочу загрузить самую последнюю версию приложения (через github), я использую npm run build (после использования git pull) , Проблема в том, что когда я запускаю npm run build, он перезаписывает старые файлы (что ожидается), но если вы попытаетесь зайти на сайт в это время, вы получите ошибку (на сайте). Есть ли способ сохранить сайт, пока я обновляю производственный код до новейшего git pull / commit?

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

Ответы [ 3 ]

1 голос
/ 11 января 2020

Есть много способов управления этим делом.

Проблема в том, что когда запускается задача сборки, она обычно занимает довольно много времени (также 2/3 минуты) и очищает папку dist / build во время работы.

То, что вы можете сделать сейчас, как легко исправить, - это обслуживать другую папку вашего приложения, а не одну цель при сборке. Затем в конце сценария сборки объедините сценарий для копирования папки сборки в обслуживаемую папку.

Таким образом, приложение все еще обслуживается во время сборки, и когда задача заканчивается, новая сборка будет перемещена в обслуживаемую папку.

1 голос
/ 11 января 2020

хорошо, что вы можете сделать, это сохранить два экземпляра приложения для примера. Это можно сделать с помощью инструмента оркестровки, например kubernates .

тогда вы сможете указать второй экземпляр приложения во время простоя приложения, чтобы защитить приложение от выхода из строя и поддерживать процессы в рабочем состоянии

вы можете узнать больше здесь

0 голосов
/ 11 января 2020

Я бы использовал PM2, он будет поддерживать работу вашего сервера даже после ошибок.

"PM2 - менеджер производственных процессов для Node.js приложений со встроенным балансировщиком нагрузки. Он позволяет поддерживать работоспособность приложений навсегда, чтобы перезагрузить их без простоя и облегчить общие задачи системного администратора. "

https://www.npmjs.com/package/pm2

Простота установки и использования.

...