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:

  • I found an image on docker hub that I like but doesn't meet my needs. How do I update it and make it my own?
  • Logstash: If-based Drop On Event After Split
  • Decouple and Dockerize Django and Celery
  • What is the best Docker tagging strategy?
  • docker container never comes up
  • File is not created in Docker
  • 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.

  • Docker DNS on Enterprise Networked Ubuntu
  • Docker swarm node cannot see service
  • How To Run Docker Commands Asynchronously?
  • elastic-beanstalk docker app not updating upon deploy
  • Symbolic Link Host to Docker Container
  • How to configure dns entries for Docker Compose
  • 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.