使用 exec
将替换父进程,而不是运行两个进程。
这对于 Docker 来说很重要,因为信号被正确地代理。例如,如果 Redis 在没有执行任务的情况下启动,则停靠码头停止后不会收到 SIGTERM,并且不会有机会彻底关闭。在某些情况下,这可能导致数据丢失或僵尸进程。
如果您启动子进程(即不使用 exec),则父进程将负责处理和转发信号。这是在容器中运行多个进程时最好使用 supervisord 或类似的原因之一,因为它将适当地转发信号。
使用 exec
将替换父进程,而不是运行两个进程。
这对于 Docker 来说很重要,因为信号被正确地代理。例如,如果 Redis 在没有执行任务的情况下启动,则停靠码头停止后不会收到 SIGTERM,并且不会有机会彻底关闭。在某些情况下,这可能导致数据丢失或僵尸进程。
如果您启动子进程(即不使用 exec),则父进程将负责处理和转发信号。这是在容器中运行多个进程时最好使用 supervisord 或类似的原因之一,因为它将适当地转发信号。
本文标题:docker-entrypoint.sh 脚本中使用 exec
本文链接:https://www.haomeiwen.com/subject/kpkhqrtx.html
网友评论