이것이 최선의 방법은 아닐 수도 있지만 시도해 보고 있습니다. 다음과 같이 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초 후에 자동으로 다시 시작되도록 합니다. 새 코드가 있으면 새 컨테이너를 배포해야 합니다.