entrypoint.sh
#!/usr/bin/env bash set -o errexitset -o pipefailset -o nounset function mongo_ready(){python << ENDimport sysimport pymongotry: client = pymongo.MongoClient('mongodb://database:27017', serverSelectionTimeoutMS=1000) client.server_info()except: sys.exit(-1)sys.exit(0)END} function frog_ready(){python << ENDimport sysfrom pynlpl.clients.frogclient import FrogClienttry: frogclient = FrogClient('frog', 12345, returnall=True)except: sys.exit(-1)sys.exit(0)END} function redis_ready(){python << ENDimport sysfrom redis import Redistry: Redis(host='redis', port=6379).ping()except: sys.exit(-1)sys.exit(0)END} until mongo_ready; do >&2 echo "Waiting for MongoDB to come online" sleep 1done &mongo_waiter_pid=$! until frog_ready; do >&2 echo "Waiting for FROG service to come online" sleep 1done &frog_waiter_pid=$! until redis_ready; do >&2 echo "Waiting for Redis service to come online" sleep 1done &redis_waiter_pid=$! wait ${mongo_waiter_pid}wait ${frog_waiter_pid}wait ${redis_waiter_pid} >&2 echo "FROG & Redis & MongoDB are up - continuing..." exec "$@"