From 31e8dfccd15d2d2ffea01b4e3451c8fee882d455 Mon Sep 17 00:00:00 2001 From: Hans Schulz Date: Thu, 17 May 2018 16:28:18 +0200 Subject: [PATCH 1/2] add curl timeout --- docker-entrypoint | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docker-entrypoint b/docker-entrypoint index 3516d02..aee86f8 100755 --- a/docker-entrypoint +++ b/docker-entrypoint @@ -3,12 +3,17 @@ set -e DOCKER_SOCK=${DOCKER_SOCK:-/var/run/docker.sock} TMP_DIR=/tmp/restart +CURL_TIMEOUT=${CURL_TIMEOUT:-30} # SIGTERM-handler term_handler() { exit 143; # 128 + 15 -- SIGTERM } +docker_curl() { + curl --max-time "${CURL_TIMEOUT}" --no-buffer -s --unix-socket "${DOCKER_SOCK}" "$@" +} + trap 'kill ${!}; term_handler' SIGTERM if [ "$1" = 'autoheal' ] && [ -e ${DOCKER_SOCK} ]; then @@ -32,21 +37,21 @@ if [ "$1" = 'autoheal' ] && [ -e ${DOCKER_SOCK} ]; then while true; do sleep ${AUTOHEAL_INTERVAL:=5} - CONTAINERS=$(curl --no-buffer -s -XGET --unix-socket ${DOCKER_SOCK} http://localhost/containers/json | selector) + CONTAINERS=$(docker_curl -XGET http://localhost/containers/json | selector) for CONTAINER in $CONTAINERS; do - HEALTH=$(curl --no-buffer -s -XGET --unix-socket ${DOCKER_SOCK} http://localhost/containers/${CONTAINER}/json | jq -r .State.Health.Status) + HEALTH=$(docker_curl -XGET http://localhost/containers/${CONTAINER}/json | jq -r .State.Health.Status) if [ "unhealthy" = "$HEALTH" ]; then DATE=$(date +%d-%m-%Y" "%H:%M:%S) - CONTAINER_NAME=$(curl --no-buffer -s -XGET --unix-socket ${DOCKER_SOCK} http://localhost/containers/${CONTAINER}/json | jq -r .Name) + CONTAINER_NAME=$(docker_curl -XGET http://localhost/containers/${CONTAINER}/json | jq -r .Name) echo "$DATE Container ${CONTAINER_NAME} (${CONTAINER:0:12}) found to be unhealthy" touch "$TMP_DIR/$CONTAINER" fi done for CONTAINER in `ls $TMP_DIR`; do DATE=$(date +%d-%m-%Y" "%H:%M:%S) - CONTAINER_NAME=$(curl --no-buffer -s -XGET --unix-socket ${DOCKER_SOCK} http://localhost/containers/${CONTAINER}/json | jq -r .Name) + CONTAINER_NAME=$(docker_curl -XGET http://localhost/containers/${CONTAINER}/json | jq -r .Name) echo "$DATE Restarting container ${CONTAINER_NAME} (${CONTAINER:0:12})" - curl -f --no-buffer -s -XPOST --unix-socket ${DOCKER_SOCK} http://localhost/containers/${CONTAINER}/restart && rm "$TMP_DIR/$CONTAINER" || echo "$DATE Restarting container ${CONTAINER:0:12} failed" + docker_curl -XPOST http://localhost/containers/${CONTAINER}/restart && rm "$TMP_DIR/$CONTAINER" || echo "$DATE Restarting container ${CONTAINER:0:12} failed" done done From 6a65ad6e98f562c36ba1d87e5c527f7a7d474d54 Mon Sep 17 00:00:00 2001 From: Hans Schulz Date: Fri, 18 May 2018 10:14:56 +0200 Subject: [PATCH 2/2] Update docker-entrypoint --- docker-entrypoint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint b/docker-entrypoint index aee86f8..15a917f 100755 --- a/docker-entrypoint +++ b/docker-entrypoint @@ -51,7 +51,7 @@ if [ "$1" = 'autoheal' ] && [ -e ${DOCKER_SOCK} ]; then DATE=$(date +%d-%m-%Y" "%H:%M:%S) CONTAINER_NAME=$(docker_curl -XGET http://localhost/containers/${CONTAINER}/json | jq -r .Name) echo "$DATE Restarting container ${CONTAINER_NAME} (${CONTAINER:0:12})" - docker_curl -XPOST http://localhost/containers/${CONTAINER}/restart && rm "$TMP_DIR/$CONTAINER" || echo "$DATE Restarting container ${CONTAINER:0:12} failed" + docker_curl -f -XPOST http://localhost/containers/${CONTAINER}/restart && rm "$TMP_DIR/$CONTAINER" || echo "$DATE Restarting container ${CONTAINER:0:12} failed" done done