diff --git a/deploy/docker/seqr/Dockerfile b/deploy/docker/seqr/Dockerfile index 2093aef700..22a7b63a27 100644 --- a/deploy/docker/seqr/Dockerfile +++ b/deploy/docker/seqr/Dockerfile @@ -93,6 +93,7 @@ EXPOSE 8000 ENV TERM=xterm COPY deploy/docker/seqr/readiness_probe / +COPY deploy/docker/seqr/wait_for_routes / COPY deploy/docker/seqr/bin/*.sh /usr/local/bin/ COPY deploy/docker/seqr/config/*.py ./ COPY deploy/docker/seqr/bashrc /root/.bashrc diff --git a/deploy/docker/seqr/wait_for_routes b/deploy/docker/seqr/wait_for_routes new file mode 100755 index 0000000000..f8263fe1ac --- /dev/null +++ b/deploy/docker/seqr/wait_for_routes @@ -0,0 +1,26 @@ +#!/bin/bash + +### +# Waits for network endpoints. Intended usage is within Kubernetes CronJobs to wait for sidecar availability. +# Usage: ./wait_for_routes https://www.google.com/ https://www.broadinstitute.org https://www.broadins.org +### + +RETRY_COUNT=10 +SLEEP_S=2 + +for route in "$@" +do + retries=0 + until [ "$retries" -ge 10 ] + do + curl -s $route -o /dev/null && echo "Successful ping of $route" && break + retries=$((retries+1)) + if [ "$retries" -eq 10 ]; then + echo "Route ${route} wasn't available after ${RETRY_COUNT} connection attempts" + exit 1 + else + echo "Unable to connect to ${route}, retrying. Attempt ${retries}/${RETRY_COUNT}" + sleep $SLEEP_S + fi + done +done