Рассмотрим следующие случаи, когда во время выполнения nodejs происходит сбой или принудительное отключение, я хочу выполнить некоторую очистку, например, отменить регистрацию в консуле, которая является утилитой регистрации и обнаружения служб.
["exit", "SIGINT", "SIGHUP", "SIGTERM", "SIGQUIT", "SIGUSR1", "SIGUSR2", "uncaughtException"].forEach(function(value){
process.on(value, function(){
consul.agent.check.deregister(env.CONSUL_ID, function(error) {
if (error) throw error;
console.log("DeRegistered Consul.");
process.exit(1);
});
})
});
Сигналы не срабатывают, когда я снимаю контейнер (docker-compose down), однако они срабатывают, когда я запускаю экземпляр nodejs в терминале, и я нажимаю Ctrl-C для принудительного выхода.
Пожалуйста, проверьте также случаи сигналов, например, мне может не потребоваться необработанное исключение, отмена регистрации должна произойти только тогда, когда весь экземпляр nodejs выйдет из строя. Любые другие ненужные сигналы здесь или сигналы, которые я мог бы пропустить?
Редактировать
Как запустить контейнер. (используя docker-compose
)
dept:
image: node:10
container_name: dept
working_dir: /service
command: bash -c "npm install && npm install nodemon -g && nodemon --exec npm start"
ports:
- 3003:3000
- 9232:9229
volumes:
- "./dept:/dept"