これが最善の方法ではないかもしれませんが、試してみています。次のように、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秒後に自動的に再起動します。新しいコードがある場合は、新しいコンテナを展開する必要があります。