node.js - 使用 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 运行?
解决方案
问题是pm2 start
pm2 作为守护进程(“在后台”)运行,而 Docker 并不知道。
您需要使用pm2-runtime
使其在前台运行:
CMD [ "pm2-runtime", "start", "npm", "--", "start" ]
推荐阅读
- python - 从数据框中的数字中提取最高位值数字
- c - 共享库卸载和 atexit 处理 - 什么顺序?
- css - 如何为 React bootstrap DropDown 添加滚动条?
- android - MpAndroidChart valueformatter xAxis 的问题
- chrome-web-store - 谷歌拒绝发布 Chrome 扩展程序,称“您的产品违反了该政策的隐私政策和安全传输部分”
- arrays - 具有实下标变量的数组
- javascript - 从 devtools 运行代码以获取 json 时出现 CORS 错误,但如果我打开 json 然后运行代码则不会出现错误
- java - 得到错误 404 源服务器没有找到目标资源的当前表示或不愿意透露存在的表示
- sql-server - 什么是 XA 交易?如何在 Windows 上为 SQL Server 2016 启用 XA 事务
- c++ - 在使用 C++ 在 OpenGL 中移动形状时按时间自动旋转形状