我正在使用dockerfile加载我的节点js应用程序,当我运行命令docker run -p 4500:4500 myname/my-docker-image时,由于某种原因,映像构建成功了
我得到的回应是:
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 最重要的是在我为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"
}
}
]
}发布于 2016-09-01 12:55:22
我收到了这个错误,但在我的例子中,问题被证明要简单得多,在创建processes.json文件时文件名有一个拼写错误。以下是我为解决此问题而采取的步骤:
在交互模式下使用shell运行docker容器。它是从正确的工作目录开始的吗?所有的文件都准备好了吗,包括你的processes.json文件?在交互式会话中执行pm2 start processes.json是否有效?
$ docker run -it jla/dockerizing-node-app bash
root@a9ee4c9c7816:/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等其他命令,从命令的角度查看容器中发生的情况。你应该能够通过一些坚持不懈和仔细的观察来让它工作。
https://stackoverflow.com/questions/37694946
复制相似问题