首页 > 解决方案 > 使用 pm2 start 时 Docker 以代码 0 退出

问题描述

Dockerfile包含的pm2 start命令如下:

FROM node:10

WORKDIR /usr/src/app

COPY . .

# ...

EXPOSE 8080

CMD [ "pm2", "start", "npm", "--", "start" ]

但是,在 pm2 日志成功启动后,容器会立即退出:

[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /usr/local/bin/npm in fork_mode (1 instance)
[PM2] Done.

如何让容器继续使用 pm2 运行?

标签: node.jsdockerpm2

解决方案


问题是pm2 startpm2 作为守护进程(“在后台”)运行,而 Docker 并不知道。

您需要使用pm2-runtime使其在前台运行:

CMD [ "pm2-runtime", "start", "npm", "--", "start" ]

请参阅 pm2“容器集成”文档。


推荐阅读