Reputation: 27227
My Dockerfile
contains the pm2 start
command as follows:
FROM node:10
WORKDIR /usr/src/app
COPY . .
# ...
EXPOSE 8080
CMD [ "pm2", "start", "npm", "--", "start" ]
However the container exits straightaway after pm2 logs successfully starting:
[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.
How can I get the container to stay running with pm2?
Upvotes: 7
Views: 5772
Reputation: 59
Also faced this issue of immediately stopping container with pm2-runtime
usage.
I decided to change last line to:
CMD ["pm2-runtime", "dist/index.js", "--no-daemon"]
That resolved my issue.
Thus, in your case it could be:
CMD ["pm2-runtime", "start", "--no-daemon", "npm", "--", "start"]
Upvotes: 1
Reputation: 27227
The problem is that pm2 start
runs pm2 as a daemon ("in the background"), which Docker isn't aware of.
You need to use pm2-runtime
to make it run in the foreground:
CMD [ "pm2-runtime", "start", "npm", "--", "start" ]
See pm2 "Container integration" docs.
Upvotes: 27