簡體   English   中英

在dokku部署上的Upstart Node.js應用程序(Digital Ocean)

[英]Upstart node.js app on dokku deployment (Digital Ocean)

我使用dokku (基於Docker的mini-Heroku)將node.js應用程序部署到了Digital Ocean。 該應用程序是通過Procfile中的命令啟動的( web: node app.js )。
如何使用Upstart啟動它,使其在崩潰后自動重新啟動?

添加:
當我使用git push dokku master部署時,我需要它來git push dokku master

編輯文件/etc/init/node.conf並將以下代碼放入其中。將/opt/node_project/更改為項目的路徑。 編輯此文件時,您需要是root用戶,因此請使用sudo打開編輯器。

description "Node server"
author "eagor"


# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
respawn


script
  echo $$ > /var/run/node.pid;
  exec node /opt/node_project/app.js
end script


post-stop script
  rm -f /var/run/node.pid
end script

現在,您已經為流程創建了Upstart配置,您可以從命令行啟動它:

$ sudo service node start

Upstart將監視您的進程,並在發生故障時將其重新啟動。

它還會將日志重定向到/var/log/upstart/node.log

永遠

上面的方法直接與node一起使用,並且會繞過Dokku。 看起來Upstart並不是解決此問題的最佳方法。

您應該考慮使用forever模塊。 forever添加到您的package.json依賴項。 然后在您的Procfile中使用以下代碼: web: ./node_modules/forever/bin/forever app.js

從Dokku 0.7.0開始,它內置了重新啟動策略:

https://github.com/dokku/dokku/blob/master/docs/deployment/process-management.md#restart-policies

例如

# only restart it on Docker restart if it was not manually stopped
dokku ps:set-restart-policy node-js-app unless-stopped

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM