3

我用 Node.js 和 pm2 构建了一个 Docker 映像。我启动了容器:

docker run -d --name test -p 22 myImage

然后我进入容器:

docker exec -it test /bin/bash

在容器中,执行命令:

pm2 list

它卡在这里:

在此处输入图像描述

Ps:我的应用程序在 Docker 容器中运行良好,如果我添加CMD pm2 start app.js.Dockerfile

4

2 回答 2

6

如果您的 dockerfile CMD 是 pm2 命令,则您必须包含 --no-daemon arg 选项,以便 pm2 在前台运行,因此您的 docker 容器继续运行。

Dockerfile CMD 示例:

CMD ["pm2", "start", "app.js", "--no-daemon"]

否则,如果没有 --no-daemon,pm2 会作为后台进程启动,docker 认为 pm2 命令的执行完成并停止。

https://github.com/Unitech/PM2/issues/259

于 2015-07-24T04:51:28.013 回答
2
CMD ["pm2-docker", "pm2.yaml"]

这是新方法。

请不要使用以前的方法。

于 2017-02-03T04:34:42.570 回答