Изящная деградация в док-контейнере - PullRequest
0 голосов
/ 09 октября 2019

Рассмотрим следующие случаи, когда во время выполнения 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);
        });
    })
});
  1. Сигналы не срабатывают, когда я снимаю контейнер (docker-compose down), однако они срабатывают, когда я запускаю экземпляр nodejs в терминале, и я нажимаю Ctrl-C для принудительного выхода.

  2. Пожалуйста, проверьте также случаи сигналов, например, мне может не потребоваться необработанное исключение, отмена регистрации должна произойти только тогда, когда весь экземпляр 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"
...