使用 docer 应该尽量遵循 one process per container但是 node 挂了怎么办? 我尝试在容器内使用 Pm2,但是容器一起来就结束了, docker 容器至少需要保证有一个进程,如果没有就会退出.可是我使用pm2为什么不行呢?如果不能使用 pm2, docker run restart always 可以解决吗?
pm2를 docker에서 사용하는 경우 pm2 명령을 pm2-docker 명령으로 변경해야 포그라운드에서 실행될 수 있습니다. 그리고 개인적으로는 docker에서 pm2를 사용할 필요가 없다고 생각합니다. node 프로세스가 멈추면 해당 컨테이너도 실행이 중지되므로 docker 컨테이너를 시작할 때 restart=always 매개변수를 추가하면 자동으로 다시 시작됩니다
pm2 공식 웹사이트의 docker 통합 문서를 참고하세요
pm2가 포그라운드에서 실행되고 있는지 확인해야 합니다. 즉, dockerfile의 CMD 또는 ENTRYPOINT에서 시작된 프로세스는 데몬 모드에서 실행될 수 없습니다.
컨테이너를 실행할 때 사용할 CPU 코어 수를 지정할 수 있습니다. 코어를 하나만 할당하면 CPU의 기본 스케줄링 단위가 스레드 전용이므로 여러 Node.js 프로세스를 시작할 필요가 없습니다. 하나의 코어는 하나의 Node.js 프로세스를 실행하는 것을 의미합니다
pm2를 docker에서 사용하는 경우 pm2 명령을 pm2-docker 명령으로 변경해야 포그라운드에서 실행될 수 있습니다. 그리고 개인적으로는 docker에서 pm2를 사용할 필요가 없다고 생각합니다. node 프로세스가 멈추면 해당 컨테이너도 실행이 중지되므로 docker 컨테이너를 시작할 때 restart=always 매개변수를 추가하면 자동으로 다시 시작됩니다
pm2 공식 웹사이트의 docker 통합 문서를 참고하세요
pm2가 포그라운드에서 실행되고 있는지 확인해야 합니다. 즉, dockerfile의 CMD 또는 ENTRYPOINT에서 시작된 프로세스는 데몬 모드에서 실행될 수 없습니다.
컨테이너를 실행할 때 사용할 CPU 코어 수를 지정할 수 있습니다. 코어를 하나만 할당하면 CPU의 기본 스케줄링 단위가 스레드 전용이므로 여러 Node.js 프로세스를 시작할 필요가 없습니다. 하나의 코어는 하나의 Node.js 프로세스를 실행하는 것을 의미합니다