From fab1a8d62e5efe19232233ede89ea81ea65ebb13 Mon Sep 17 00:00:00 2001 From: Rafal Pieniazek Date: Thu, 19 Oct 2017 12:48:07 +0200 Subject: [PATCH 1/4] Update docker-entrypoint.sh --- docker-entrypoint.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8b12d76..f6510b9 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,13 +1,17 @@ #!/bin/sh +set -e + +#Make the log file & change log file permission +touch /var/log/haproxy/haproxy.log +chmod 644 /var/log/haproxy/haproxy.log + # Make sure service is running service rsyslog start -# Touch the log file so we can tail on it -touch /var/log/haproxy.log - # Throw the log to output tail -f /var/log/haproxy.log & # Start haproxy exec haproxy -f /usr/local/etc/haproxy/haproxy.cfg + From 121dcee8c165409de7ef830a7335358149366b99 Mon Sep 17 00:00:00 2001 From: Rafal Pieniazek Date: Thu, 19 Oct 2017 12:58:58 +0200 Subject: [PATCH 2/4] Code for handling signals --- docker-entrypoint.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index f6510b9..fcee3be 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -15,3 +15,35 @@ tail -f /var/log/haproxy.log & # Start haproxy exec haproxy -f /usr/local/etc/haproxy/haproxy.cfg + +### Work towards handling signals +pid=0 + +# SIGUSR1-handler +my_handler() { + echo "my_handler" +} + +# SIGTERM-handler +term_handler() { + if [ $pid -ne 0 ]; then + kill -SIGTERM "$pid" + wait "$pid" + fi + exit 143; # 128 + 15 -- SIGTERM +} + +# setup handlers +# on callback, kill the last background process, which is `tail -f /dev/null` and execute the specified handler +trap 'kill ${!}; my_handler' SIGUSR1 +trap 'kill ${!}; term_handler' SIGTERM + +# run application +node program & +pid="$!" + +# wait forever +while true +do + tail -f /dev/null & wait ${!} +done From 88975ee398292b52db96aeef2b2367e38376bb43 Mon Sep 17 00:00:00 2001 From: Rafal Pieniazek Date: Wed, 31 Jan 2018 15:56:27 +0100 Subject: [PATCH 3/4] adds dumb-init for handling docker signals --- Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index db843a1..076bd80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,9 @@ RUN apt-get update && apt-get install rsyslog -y && \ sed -i 's/#$ModLoad imudp/$ModLoad imudp/g' /etc/rsyslog.conf && \ sed -i 's/#$UDPServerRun 514/$UDPServerRun 514/g' /etc/rsyslog.conf +RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64 +RUN chmod +x /usr/local/bin/dumb-init + ADD haproxy.conf /etc/rsyslog.d COPY docker-entrypoint.sh / @@ -19,4 +22,5 @@ LABEL org.label-schema.build-date="2016-06-20T10:23:04Z" \ EXPOSE 80 443 -ENTRYPOINT ["/docker-entrypoint.sh"] +ENTRYPOINT ["/usr/local/bin/dumb-init"] +CMD ["/docker-entrypoint.sh"] From e0c47ec930103967e5d5a80d8abc6ec2ef35c63d Mon Sep 17 00:00:00 2001 From: RafPe Date: Thu, 1 Feb 2018 15:21:26 +0100 Subject: [PATCH 4/4] improvement for handling signals --- Dockerfile | 2 +- docker-entrypoint.sh | 37 +++---------------------------------- 2 files changed, 4 insertions(+), 35 deletions(-) diff --git a/Dockerfile b/Dockerfile index 076bd80..160ba52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM haproxy:latest MAINTAINER RafPe -RUN apt-get update && apt-get install rsyslog -y && \ +RUN apt-get update && apt-get install rsyslog wget -y && \ sed -i 's/#$ModLoad imudp/$ModLoad imudp/g' /etc/rsyslog.conf && \ sed -i 's/#$UDPServerRun 514/$UDPServerRun 514/g' /etc/rsyslog.conf diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index fcee3be..7ba9b18 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -3,8 +3,8 @@ set -e #Make the log file & change log file permission -touch /var/log/haproxy/haproxy.log -chmod 644 /var/log/haproxy/haproxy.log +touch /var/log/haproxy.log +chmod 644 /var/log/haproxy.log # Make sure service is running service rsyslog start @@ -13,37 +13,6 @@ service rsyslog start tail -f /var/log/haproxy.log & # Start haproxy -exec haproxy -f /usr/local/etc/haproxy/haproxy.cfg +exec haproxy -f /usr/local/etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -### Work towards handling signals -pid=0 - -# SIGUSR1-handler -my_handler() { - echo "my_handler" -} - -# SIGTERM-handler -term_handler() { - if [ $pid -ne 0 ]; then - kill -SIGTERM "$pid" - wait "$pid" - fi - exit 143; # 128 + 15 -- SIGTERM -} - -# setup handlers -# on callback, kill the last background process, which is `tail -f /dev/null` and execute the specified handler -trap 'kill ${!}; my_handler' SIGUSR1 -trap 'kill ${!}; term_handler' SIGTERM - -# run application -node program & -pid="$!" - -# wait forever -while true -do - tail -f /dev/null & wait ${!} -done