【发布时间】:2015-12-28 20:05:53
【问题描述】:
当我的 Dockerfile 以
结尾时CMD node .
docker 使用命令 /bin/sh -c "node ." 而不是简单地 node . 运行该容器(我知道,我可以使用 CMD ["node", "."] 来执行此操作)。
我认为这种行为实际上很好,因为这意味着容器内部 PID1 是 /bin/sh 而不是我不起眼的节点脚本。
如果我理解正确PID1 负责收割孤立的僵尸进程,而我真的不想对此负责...所以如果/bin/sh 可以做到这一点,那就太好了。 (其实我以为这就是 docker 重写我的CMD 的原因)。
问题是,当我通过docker-composer stop 或docker-composer kill -s SIGTERM 向容器发送SIGTERM(以/bin/sh -c "node ." 开头)时,信号没有到达我的node 进程,因此它得到了在 10 秒的宽限期后,每次都用 SIGKILL 强行杀死。不好看。
有没有办法让别人管理我的僵尸并让我的节点实例接收 docker 发送的信号?
【问题讨论】:
标签: linux node.js docker docker-compose