使用node命令而不是npm启动容器
一段解释
我们经常看到开发者使用CMD 'npm start'
启动app的代码示例。这是一个不好的做法。因为npm
不会向您的app转发信号(signals),这将阻止应用优雅关闭(graceful shutdown),(见[/sections/docker/graceful-shutdown.md])。如果您使用了子进程(child-processes),在意外关闭时则无法正确清理它们,将僵尸进程留在主机上。同时,npm start
也导致无意义的增加一个额外进程。使用CMD ['node','server.js']
启动您的应用吧。假如您的应用使用了子进程(child-processes),也可以使用TINI
作为入口(entrypoint)。