#!/usr/bin/env bash APP=$1 set -x # Signal helper source /opt/scripts/signals.sh PID=0 TERM_handler() { SIGNAME="$1" echo "Killing ${PID}" echo "Signal ${SIGNAME}" if [ ${PID} -ne 0 ]; then ps -ef --forest CHILDS=$(pgrep -P "${PID}") kill -"${SIGNAME}" -"${PID}" for i in $CHILDS; do wait $i done fi ps -ef --forest ret=$(signal_return_val ${SIGNAME}) exit $ret } signals_trap_with_arg TERM_handler SIGTERM ${APP} & PID=$$ # wait forever signals_wait_forever # https://docs.docker.com/compose/faq/ # https://medium.com/@gchudnov/trapping-signals-in-docker-containers-7a57fdda7d86