我想在我的Docker容器中运行我的简单节点服务器作为后台进程,但是当我尝试使用forever
启动它时,我得到以下内容:
fs.js:432
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory '/.forever/9Spa.log'
所以我尝试在我当前的工作目录中创建一个名为.forever
的文件夹,但后来我得到了几乎相同的错误(*.log
文件每次运行时都有不同的名称,正如预期的那样。)
如果我在不使用forever
的情况下运行我的服务器,它运行正常,没有任何错误。 E.g:
node server
或
npm start
两者都很好,但当然不会在后台运行。
我在运行时遇到同样的错误
forever list
因此forever
显然存在问题,而不是我的服务器代码。
npm list -g
表示已安装forever
。
我在Docker容器中使用Ubuntu 14.04.1 LTS
图像。
我愿意接受建议。
我终于让forever
在.forever
和/home/testuser
文件夹中运行我的pids
文件夹,然后运行以下内容:
forever start -p /home/testuser/.forever --pidFile /home/testuser/.forever/pids/server.pid server.js
根据the docs
-p PATH
所有永久相关文件的基本路径(pid文件等)
然而,事实并非如此。我被迫指定--pidFile
所以,万岁,我的服务器作为后台进程运行。但是以下情况仍然存在:
forever stop server.js
=>
/usr/local/lib/node_modules/forever/lib/forever.js:634
var procs = processes.filter(function (p) {
^
TypeError: Object Error: EACCES, mkdir '/.forever' has no method 'filter'
at Object.forever.findByScript (/usr/local/lib/node_modules/forever/lib/forever.js:634:25)
at /usr/local/lib/node_modules/forever/lib/forever.js:189:20
at /usr/local/lib/node_modules/forever/lib/forever.js:136:14
at /usr/local/lib/node_modules/forever/lib/forever.js:89:20
at /usr/local/lib/node_modules/forever/node_modules/utile/node_modules/mkdirp/index.js:34:29
at /usr/local/lib/node_modules/forever/node_modules/utile/node_modules/mkdirp/index.js:46:53
at Object.oncomplete (fs.js:107:15)
forever stop -p /home/bit2bit/.forever server.js
相同的结果
forever list
==>
/usr/local/lib/node_modules/forever/lib/forever.js:683
procs.forEach(function (proc) {
^
TypeError: Object Error: EACCES, mkdir '/.forever' has no method 'forEach'
at Object.forever.format (/usr/local/lib/node_modules/forever/lib/forever.js:683:11)
at /usr/local/lib/node_modules/forever/lib/forever.js:520:28
at /usr/local/lib/node_modules/forever/lib/forever.js:136:14
at /usr/local/lib/node_modules/forever/lib/forever.js:89:20
at /usr/local/lib/node_modules/forever/node_modules/utile/node_modules/mkdirp/index.js:34:29
at /usr/local/lib/node_modules/forever/node_modules/utile/node_modules/mkdirp/index.js:46:53
at Object.oncomplete (fs.js:107:15)
所以,虽然我现在可以启动我的服务器,但我无法再次停止它。