cannot pm2 list in docker containers

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:

  • How do I populate a volume in a docker-compose.yaml
  • Can I have one Docker Swarm Manager and different clusters?
  • Docker log file not created
  • Can not access Nodejs app which deployed on container of Bluemix
  • Upload local files to docker container
  • Docker data volume support on Docker Cloud
  • 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.

  • Can't install agent for Cassandra in Docker container
  • Docker remove all images permission denied
  • docker build of Dockerfile fails
  • How to mount docker volume with jenkins docker container?
  • install nvm in docker
  • Docker create base image
  • 2 Solutions collect form web for “cannot pm2 list in docker containers”

    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

    CMD ["pm2-docker", "pm2.yaml"]
    

    This is the new approach.

    Please do not use previous approaches.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.