node.js - dokku 部署上的 Upstart Node.js 应用程序( digital ocean )

标签 node.js digital-ocean procfile dokku

我使用dokku将我的node.js应用程序部署到Digital Ocean。 (Docker 驱动的迷你 Heroku)。该应用程序通过 Procfile (web:node app.js) 中的命令启动。
我如何从 Upstart 开始它,以便崩溃后自动重新启动?

添加:
当我使用 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

关于node.js - dokku 部署上的 Upstart Node.js 应用程序( digital ocean ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26798048/

相关文章:

Heroku Procfile 不工作

javascript - 使用 JavaScript 上传 Blob 数组并在 Node.js 上处理它们

node.js - 如何声明任何客户端都可以使用 socket.io 访问的变量

node.js - Puppeteer 内存增加问题

python - Django 和 Django 奥斯卡

python - Heroku procfile 多个 worker

node.js - 使用nodejs或express render为swig设置全局变量

ubuntu-16.04 - UFW 防火墙不适用于 DigitalOcean 中的 Ubuntu

docker - Nginx没有Docker连接到Docker容器(clojure)

ruby-on-rails - 过滤器链因强制 SSL 呈现或重定向而停止