add simple wait-for script
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
6e1aaf4500
commit
591857e2ba
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
env*
|
||||
test/
|
||||
source/
|
||||
|
@ -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 []
|
||||
|
11
overlay/usr/local/bin/entrypoint
Executable file
11
overlay/usr/local/bin/entrypoint
Executable 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
|
@ -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
|
@ -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
79
overlay/usr/local/bin/wait-for
Executable 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 "$@"
|
Loading…
Reference in New Issue
Block a user