这可能不是最佳实践,但我正在尝试。我有一个与 docker 一起使用的entrypoint.sh 文件,如下所示:
ENTRYPOINT ["./entrypoint.sh"]
这是entrypoint.sh:
#!/usr/bin/env bash
args="$@"
echo "docker container arguments: '$args'"
"${args}" || {
echo "Application exited with a non-zero code: '$?'";
exit 1;
}
好吧,事实上我将其更新为这样:
#!/usr/bin/env bash
args="$@"
echo "docker container arguments: '$args'"
while true; do
"${args}" || {
echo "Application exited with a non-zero code: '$?'";
kill -SIGUSR1 "$(ps -o ppid= -p $$)" ##### THIS
sleep 3;
};
done;
执行永远循环可能是一个坏主意 - 我们应该让它崩溃并重新启动一个新容器。
但为了论证——我的问题是-> 是否有一些信号可以发送给容器编排器,表明我的进程不断崩溃,以便将其取出并放入一个新的?
如果没有新的代码要部署,那么我会让它在 3 秒的间隔后自行重启。如果有新的代码,那么肯定要部署一个新的容器。