add simple wait-for script
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Robert Kaussow 2020-02-01 18:34:59 +01:00
parent 6e1aaf4500
commit 591857e2ba
6 changed files with 94 additions and 8 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
env*
test/
source/

View File

@ -35,7 +35,7 @@ USER app
STOPSIGNAL SIGTERM
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD /usr/local/bin/healthcheck.sh
ENTRYPOINT ["/usr/local/bin/entrypoint"]
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD /usr/local/bin/healthcheck
WORKDIR /app
CMD []

View File

@ -0,0 +1,11 @@
#!/usr/bin/env sh
set -eo pipefail
/usr/local/bin/gomplate -V -o /app/.env -f /etc/templates/env.tmpl
if [ -z "$BITWARDENRS_WAIT_FOR_HOST" ] && [ -z "$BITWARDENRS_WAIT_FOR_PORT" ]
then
exec /app/bitwarden_rs
else
exec ${BITWARDENRS_WAIT_FOR_HOST}:${BITWARDENRS_WAIT_FOR_PORT} -- /app/bitwarden_rs
fi

View File

@ -1,5 +0,0 @@
#!/usr/bin/env sh
/usr/local/bin/gomplate -V -o /app/.env -f /etc/templates/env.tmpl
exec /app/bitwarden_rs

View File

@ -1,6 +1,6 @@
#!/usr/bin/env sh
set -eo pipefail
URL=http://127.0.0.1:8080/alive
wget --quiet --tries=1 --spider ${URL}

79
overlay/usr/local/bin/wait-for Executable file
View File

@ -0,0 +1,79 @@
#!/bin/sh
TIMEOUT=15
QUIET=0
echoerr() {
if [ "$QUIET" -ne 1 ]; then printf "%s\n" "$*" 1>&2; fi
}
usage() {
exitcode="$1"
cat << USAGE >&2
Usage:
$cmdname host:port [-t timeout] [-- command args]
-q | --quiet Do not output any status messages
-t TIMEOUT | --timeout=timeout Timeout in seconds, zero for no timeout
-- COMMAND ARGS Execute command with args after the test finishes
USAGE
exit "$exitcode"
}
wait_for() {
for i in `seq $TIMEOUT` ; do
nc -z "$HOST" "$PORT" > /dev/null 2>&1
result=$?
if [ $result -eq 0 ] ; then
if [ $# -gt 0 ] ; then
exec "$@"
fi
exit 0
fi
sleep 1
done
echo "Operation timed out" >&2
exit 1
}
while [ $# -gt 0 ]
do
case "$1" in
*:* )
HOST=$(printf "%s\n" "$1"| cut -d : -f 1)
PORT=$(printf "%s\n" "$1"| cut -d : -f 2)
shift 1
;;
-q | --quiet)
QUIET=1
shift 1
;;
-t)
TIMEOUT="$2"
if [ "$TIMEOUT" = "" ]; then break; fi
shift 2
;;
--timeout=*)
TIMEOUT="${1#*=}"
shift 1
;;
--)
shift
break
;;
--help)
usage 0
;;
*)
echoerr "Unknown argument: $1"
usage 1
;;
esac
done
if [ "$HOST" = "" -o "$PORT" = "" ]; then
echoerr "Error: you need to provide a host and port to test."
usage 2
fi
wait_for "$@"