Docker 컨테이너 종료 시그널

By | 2020년 12월 30일

쉘 스크립트로 실행 시킨 컨테이너 내에 서비스는 도커가 종료시 종료 시그널을 받지 못함.

Entrypoint 가 shell script 일 경우.

해결방법

  • 쉘 스크립트에서 SIGTERM 이벤트를 받아 해당 서비스를 KILL 하면서 SIGTERM을 보내기
#!/bin/sh

set -x
pid=0

# SIGTERM-handler
term_handler() {
  if [ $pid -ne 0 ]; then
    kill -SIGTERM "$pid"
    wait "$pid"
  fi
  exit 143;
}

trap 'kill ${!}; term_handler' SIGTERM

java -jar server.jar &

pid="$!"

# wait forever
while true
do
  tail -f /dev/null & wait ${!}
done