【发布时间】:2019-09-12 12:57:21
【问题描述】:
我一直在尝试在我的 node.js 应用程序中捕获关闭命令,以便在终止应用程序之前整理连接。
在生产中,我的应用程序使用 docker swarm,我可以看到 SIGTERM 通过我的:
process.on('SIGTERM', function() {});
但是,在我的开发环境中,我使用的是 docker-compose run 和 docker-compose down,这似乎不会触发我的 SIG* 捕获(我有一个本地版本的 rabbitMQ 正在运行, SIG 事件也会在关闭前发布)。
我在我的 Dockerfile 中运行 ubuntu:bionic 映像,在我的 docker-compose 文件中我有 init: true。我的 Docker 引擎是 18.09.2,compose 是 1.23.2,version: "3.7" 在我的 compose 文件的顶部。 p>
这些都是我在 index.js 中的捕获事件:
process.on('exit', () => {
reporter.ossEvent('APP STOPPED exit');
shutdown();
});
process.on('SIGINT', () => {
reporter.ossEvent('APP STOPPED SIGINT');
shutdown();
});
process.on('SIGTERM', function() {
reporter.ossEvent('APP STOPPED SIGTERM');
shutdown();
});
process.on('SIGUSR1', () => {
reporter.ossEvent('APP STOPPED SIGUSR2');
shutdown();
});
process.on('SIGUSR2', () => {
reporter.ossEvent('APP STOPPED SIGUSR2');
shutdown();
})
【问题讨论】:
-
希望这个解释对你有用:stackoverflow.com/questions/41451159/…
标签: javascript node.js docker docker-compose