I'm very happy. When encountering this problem, I have to talk about the process principle of the Docker container. Basically, people who have learned about Docker are aware of several isolation methods of Docker, and the process is also isolated. question 1. Why does the docker container crash while running? By default, the docker container will use the first process inside the container, that is, the program with pid=1, as the basis for whether the docker container is running. If the docker container pid hangs, the docker container will exit directly. 2.When docker run, use command as the internal command of the container. If you use nginx, the nginx program will run in the background. At this time, nginx is not a program with pid 1, but bash is executed. This bash hangs after executing the nginx command, so the container also exits. The same reason is true for you. After pm2 start, the pid of bash is 1. At this time, bash will exit after execution, so the container also exits. Below I will use examples to tell you why we do this! ! touch file echo "PID of this script: $$" echo "PPID of this script: $PPID" echo "UID of this script: $UID" #nginx -g 'daemon off;' At this point we start the container to execute this sh file odtoy:~ zhaojunlike$ eval `docker-machine env default` godtoy:~ zhaojunlike$ cd WorkSpace/ godtoy:WorkSpace zhaojunlike$ ls docker nodejs php pid_get godtoy:WorkSpace zhaojunlike$ vim pid_get godtoy:WorkSpace zhaojunlike$ docker run -v `pwd`/pid_get:/pid_get:ro --rm --workdir=/ nginx bash /pid_get PID of this script: 1 PPID of this script: 0 UID of this script: 0 godtoy:WorkSpace zhaojunlike$ After the container executes pid_get, the container automatically exits. At this time, the pid of the current bash execution is printed as 1. Therefore, if we want the container not to crash, non-daemon execution is a must. Of course, we can also execute inside a container. godtoy:WorkSpace zhaojunlike$ docker run -it nginx bash root@a8baa5fe77f0:/# nginx root@a8baa5fe77f0:/# godtoy:WorkSpace zhaojunlike$ We use the -it parameter to connect to the pipeline inside the container, and then we use the nginx command inside the container. Finally, after exiting the container Summarize If you need to use node in docker, there is no need to install tools such as pm2. Just run node directly. If you are afraid that your container will crash, you can add restart and other related parameters, such as The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: React uses routing to redirect to the login interface
>>: How to implement Mysql switching data storage directory
B-tree is a common data structure. Along with him...
Running environment, Idea2020 version, Tomcat10, ...
Table of contents 1. Location Object 1. URL 2. Pr...
What if the basic images have been configured bef...
Table of contents Basic syntax for multi-table jo...
In most cases, MySQL does not support Chinese whe...
This article example shares the specific code of ...
In order to download this database, it takes a lo...
Introduction to Git Git is an open source version...
First, let's take a look at the relative leng...
This article shares the specific code for JavaScr...
As shown below: update table1 as z left join tabl...
Preface Managing routing is an essential feature ...
PS: I've recently been reading the Nginx chap...
When I configured mysql, I set the default storag...