commit 93346bc05d1406ad9b7a1a162c57c7678ecc5891
parent ccf6ee79d0e8855cd3653667bd4e9b906458ff8b
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Wed, 25 Mar 2020 22:21:08 +0100
Merge pull request #927 from jjlin/healthcheck
Update healthcheck script to handle alternate base dir
Diffstat:
1 file changed, 52 insertions(+), 9 deletions(-)
diff --git a/docker/healthcheck.sh b/docker/healthcheck.sh
@@ -1,8 +1,52 @@
-#!/usr/bin/env sh
-
-if [ -z "$ROCKET_TLS"]
-then
- curl --fail http://localhost:${ROCKET_PORT:-"80"}/alive || exit 1
-else
- curl --insecure --fail https://localhost:${ROCKET_PORT:-"80"}/alive || exit 1
-fi
-\ No newline at end of file
+#!/bin/sh
+
+# Use the value of the corresponding env var (if present),
+# or a default value otherwise.
+: ${DATA_FOLDER:="data"}
+: ${ROCKET_PORT:="80"}
+
+CONFIG_FILE="${DATA_FOLDER}"/config.json
+
+# Given a config key, return the corresponding config value from the
+# config file. If the key doesn't exist, return an empty string.
+get_config_val() {
+ local key="$1"
+ # Extract a line of the form:
+ # "domain": "https://bw.example.com/path",
+ grep "\"${key}\":" "${CONFIG_FILE}" |
+ # To extract just the value (https://bw.example.com/path), delete:
+ # (1) everything up to and including the first ':',
+ # (2) whitespace and '"' from the front,
+ # (3) ',' and '"' from the back.
+ sed -e 's/[^:]\+://' -e 's/^[ "]\+//' -e 's/[,"]\+$//'
+}
+
+# Extract the base path from a domain URL. For example:
+# - `` -> ``
+# - `https://bw.example.com` -> ``
+# - `https://bw.example.com/` -> ``
+# - `https://bw.example.com/path` -> `/path`
+# - `https://bw.example.com/multi/path` -> `/multi/path`
+get_base_path() {
+ echo "$1" |
+ # Delete:
+ # (1) everything up to and including '://',
+ # (2) everything up to '/',
+ # (3) trailing '/' from the back.
+ sed -e 's|.*://||' -e 's|[^/]\+||' -e 's|/*$||'
+}
+
+# Read domain URL from config.json, if present.
+if [ -r "${CONFIG_FILE}" ]; then
+ domain="$(get_config_val 'domain')"
+ if [ -n "${domain}" ]; then
+ # config.json 'domain' overrides the DOMAIN env var.
+ DOMAIN="${domain}"
+ fi
+fi
+
+base_path="$(get_base_path "${DOMAIN}")"
+if [ -n "${ROCKET_TLS}" ]; then
+ s='s'
+fi
+curl --insecure --fail "http${s}://localhost:${ROCKET_PORT}${base_path}/alive" || exit 1