我用 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
如果您的 dockerfile CMD 是 pm2 命令,则您必须包含 --no-daemon arg 选项,以便 pm2 在前台运行,因此您的 docker 容器继续运行。
Dockerfile CMD 示例:
CMD ["pm2", "start", "app.js", "--no-daemon"]
否则,如果没有 --no-daemon,pm2 会作为后台进程启动,docker 认为 pm2 命令的执行完成并停止。
CMD ["pm2-docker", "pm2.yaml"]
这是新方法。
请不要使用以前的方法。