【发布时间】:2020-04-12 09:35:06
【问题描述】:
我有一个在我的 docker 包含网站的后台运行的进程。我目前正在使用 forever npm 包来保持它的运行。
我想在容器停止/杀死时干净地清理进程。
我知道容器中启动的所有进程都应该在等待 10 秒后自动终止,但我宁愿永远告诉在这个信号上停止进程....
如何在我的 docker 文件中编写这些清理脚本以在 docker 容器关闭或终止时执行?
【问题讨论】:
标签: docker dockerfile forever
我有一个在我的 docker 包含网站的后台运行的进程。我目前正在使用 forever npm 包来保持它的运行。
我想在容器停止/杀死时干净地清理进程。
我知道容器中启动的所有进程都应该在等待 10 秒后自动终止,但我宁愿永远告诉在这个信号上停止进程....
如何在我的 docker 文件中编写这些清理脚本以在 docker 容器关闭或终止时执行?
【问题讨论】:
标签: docker dockerfile forever
在您的脚本(入口点、命令)中,您应该使用exec command_name "$@" 运行命令,并且您的应用程序必须处理这些信号。
【讨论】:
exec command_name "$@" 的含义吗?美元符号和 at 符号对我来说是黑魔法
exec 运行您的命令并允许将发送到 docker 容器的信号发送到您正在运行的命令。如果您在前台运行 docker 并按 Ctrl+c,SIGTERM 将被发送到容器,感谢exec,您的运行命令将知道这一点。现在你必须处理那个信号。对于$@,请阅读devhints.io/bash#arguments