如何在Docker容器中永久使用

时间:2014-08-12 14:47:38

标签: node.js docker forever

我想在我的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)

所以,虽然我现在可以启动我的服务器,但我无法再次停止它。

1 个答案:

答案 0 :(得分:2)

Where does forever store console.log output?

尝试添加-o参数以指定日志输出的位置。