process.on('SIGTERM','shutting down...'
'use strict' <span style="color: #0000ff">var http = require('http'<span style="color: #000000">);
<span style="color: #0000ff">var server = http.createServer(<span style="color: #0000ff">function<span style="color: #000000"> (req,res) {
res.writeHead(200,{'Content-Type': 'text/plain'<span style="color: #000000">});
res.end('Hello Worldn'<span style="color: #000000">);
}).listen(3000,'0.0.0.0'<span style="color: #000000">);
console.log('server started'<span style="color: #000000">);
<span style="color: #0000ff">var signals =<span style="color: #000000"> {
'SIGINT': 2<span style="color: #000000">,'SIGTERM': 15<span style="color: #000000">
};
<span style="color: #0000ff">function<span style="color: #000000"> shutdown(signal,value) {
server.close(<span style="color: #0000ff">function<span style="color: #000000"> () {
console.log('server stopped by ' +<span style="color: #000000"> signal);
process.exit(128 +<span style="color: #000000"> value);
});
}
Object.keys(signals).forEach(<span style="color: #0000ff">function<span style="color: #000000"> (signal) {
process.on(signal,<span style="color: #0000ff">function<span style="color: #000000"> () {
shutdown(signal,signals[signal]);
});
});
/app.js .//package.json ./,]
$ docker build --no-cache -t signal-app -f Dockerfile .
$ docker run -it -- -p : --name= signal-app

$ docker container --signal= my-app

#!/usr/bin/
/app.js .//app1. ./app1./package.json ./ +x ./app1.]
$ docker build --no-cache -t signal-app1 -f Dockerfile1 .
$ docker run -it -- -p : --name= signal-app1

$ docker container stop my- --signal= my-app1
#!/usr/bin/ -pid=<span style="color: #800080">0<span style="color: #000000">
SIGUSR1-<span style="color: #000000">handler
my_handler() {
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">my_handler<span style="color: #800000">"<span style="color: #000000">
}
SIGTERM-<span style="color: #000000">handler
term_handler() {
<span style="color: #0000ff">if [ $pid -ne <span style="color: #800080">0 ]; <span style="color: #0000ff">then
<span style="color: #0000ff">kill -SIGTERM <span style="color: #800000">"<span style="color: #800000">$pid<span style="color: #800000">"
<span style="color: #0000ff">wait <span style="color: #800000">"<span style="color: #800000">$pid<span style="color: #800000">"
<span style="color: #0000ff">fi<span style="color: #000000">
exit <span style="color: #800080">143; # <span style="color: #800080">128 + <span style="color: #800080">15 --<span style="color: #000000"> SIGTERM
}
setup handlers
on callback,<span style="color: #0000ff">kill the <span style="color: #0000ff">last background process,<span style="color: #0000ff">which is <span style="color: #0000ff">tail</span> -f /dev/<span style="color: #0000ff">null</span><span style="color: #000000"> and execute the specified handler
trap <span style="color: #800000">'<span style="color: #800000">kill ${!}; my_handler<span style="color: #800000">'<span style="color: #000000"> SIGUSR1
trap <span style="color: #800000">'<span style="color: #800000">kill ${!}; term_handler<span style="color: #800000">'<span style="color: #000000"> SIGTERM
run application
node app &<span style="color: #000000">
pid=<span style="color: #800000">"<span style="color: #800000">$!<span style="color: #800000">"<span style="color: #000000">
<span style="color: #0000ff">wait<span style="color: #000000"> forever
<span style="color: #0000ff">while <span style="color: #0000ff">true
<span style="color: #0000ff">do
<span style="color: #0000ff">tail -f /dev/<span style="color: #0000ff">null & <span style="color: #0000ff">wait ${!<span style="color: #000000">}
<span style="color: #0000ff">done
/app.js .//app2. ./app2./package.json ./ +x ./app2.]
$ docker build --no-cache -t signal-app2 -f Dockerfile2 .
$ docker run -it -- -p : --name= signal-app2

(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|