2016-06-08 183 views
1

我使用的是dockerfile加载我的节点JS的应用程序,图像生成成功由于某种原因,当我运行命令docker run -p 4500:4500 myname/my-docker-image[PM2] [错误]文件processes.json

我得到的回应:

pm2 launched in no-daemon mode (you can add DEBUG="*" env variable to get more messages) 
2016-06-08 06:29:17: [PM2][WORKER] Started with refreshing interval: 30000 
2016-06-08 06:29:17: [[[[ PM2/God daemon launched ]]]] 
2016-06-08 06:29:17: BUS system [READY] on port /root/.pm2/pub.sock 
2016-06-08 06:29:17: RPC interface [READY] on port /root/.pm2/rpc.sock 
2016-06-08 06:29:17: [PM2][ERROR] File processes.json not found 
2016-06-08 06:29:17: 
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │ 
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴────────┴──────────┘ 
2016-06-08 06:29:17: Use `pm2 show <id|name>` to get more details about an app 
2016-06-08 06:29:17: --no-daemon option enabled = do not exit pm2 CLI 
2016-06-08 06:29:17: PM2 daemon PID = 1 
2016-06-08 06:29:17: [PM2] Streaming realtime logs for [all] processes 

踢球者是在我的build for pm2中明确定义的processes.json文件。

这里是我的processes.json文件的内容:

"apps": [ 
     { 
      "name": "jira-accelo-integration", 
      "script": "server.js", 
      "merge_logs": true, 
      "max_restarts": 20, 
      "instances": 4, 
      "DEBUG": "*", 
      "max_memory_restart": "200M", 
      "env": { 
       "PORT": 4500, 
       "NODE_ENV": "production" 
      } 
     } 
    ] 
} 
+1

最重要的事情你应该已经显示(但没有)是:1)process.js的路径2)你如何将它传递给pm2 – Molda

+0

path to processes.js?我无法在pm2的任何文档中找到有关processes.js的信息012.JP –

+0

很抱歉,显然我的意思是** processes.json ** – Molda

回答

0

我得到这个错误,但在我的情况下,问题竟然是简单得多,在文件名中一个错字创建我的过程时.json文件。这些是我为解决问题所采取的步骤:

以交互模式运行带有shell的docker容器。它是从正确的工作目录开始的吗?是否有所有文件,包括你的processes.json文件?如果您在交互式会话中执行pm2 start processes.json,它会起作用吗?

$ docker run -it jla/dockerizing-node-app bash 
[email protected]:/var/www/app/current# pm2 start processes.json --no-daemon 

在Dockerfile中注释掉CMD并添加一个新的来验证命令可以看到您的processes.json文件。

$ edit Dockerfile 
CMD ["ls" "-l" "processes.json"] 
$ docker build -t jla/dockerizing-node-app . 
$ docker run -p 4500:4500 jla/dockerizing-node-app 

就在这时,当ls失败时,我发现我的文件被命名为process.json。也许ls命令也会失败,但由于其他原因,例如不使用正确的WORKDIR。尝试像ls -l和pwd这样的其他命令,从命令的角度查看容器中发生了什么。你应该能够通过一些坚持和仔细观察来实现它。