cannot pm2 list in docker containers

2.9k views Asked by At

I build a Docker image with Node.js and pm2. I started the container with:

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

Then I go inside the container with:

docker exec -it test /bin/bash

In the container, exec the command:

pm2 list

And it stuck here:

enter image description here

P.s.: My application works well in the Docker container, if I add CMD pm2 start app.js in the Dockerfile.

2

There are 2 answers

2
danday74 On
CMD ["pm2-docker", "pm2.yaml"]

This is the new approach.

Please do not use previous approaches.

0
Jeff Lewis On

If your dockerfile CMD is a pm2 command, you have you include --no-daemon arg option so pm2 runs in the foreground and so your docker container continues to run.

An example Dockerfile CMD:

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

Otherwise, without --no-daemon, pm2 launches as a background process and docker thinks the execution of the pm2 command is done running and stops.

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