70 lines
2.0 KiB
Bash
Executable File
70 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
|
|
|
PAUSE_ON_FAIL_FOR_DEBUG=0
|
|
|
|
COMMAND="start"
|
|
if [ "$1" != "" ]; then
|
|
if [[ "$1" =~ ^(start|startandwait|stop)$ ]]; then
|
|
COMMAND=$1
|
|
else
|
|
echo "Invalid command. Must be one of: start,stop"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
WAIT=0
|
|
if [ "$COMMAND" == "startandwait" ]; then
|
|
COMMAND="start"
|
|
WAIT=1
|
|
fi
|
|
|
|
COMPOSEPATH="$SCRIPTPATH/rc_test_env"
|
|
export DATAROOT="$SCRIPTPATH"
|
|
|
|
if [ "$COMMAND" == "start" ]; then
|
|
echo "Fetching infrastructure config from GitHub"
|
|
COMPOSEURL=https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml
|
|
COMPOSEFILE="$COMPOSEPATH/docker-compose.yml"
|
|
curl -s "$COMPOSEURL" -o "$COMPOSEFILE"
|
|
|
|
echo "Starting infrastructure"
|
|
(
|
|
if [ -d "$SCRIPTPATH/data/db" ]; then rm -rf "$SCRIPTPATH/data/db"; fi
|
|
cd "$COMPOSEPATH"
|
|
docker-compose up -d
|
|
)
|
|
|
|
if [ $WAIT == 1 ]; then
|
|
echo "Waiting for RocketChat to be ready"
|
|
|
|
ATTEMPT_NUMBER=0
|
|
MAX_ATTEMPTS=60
|
|
while [ $ATTEMPT_NUMBER -lt $MAX_ATTEMPTS ]; do # https://stackoverflow.com/a/21189312/399007
|
|
ATTEMPT_NUMBER=$((ATTEMPT_NUMBER + 1 ))
|
|
echo "Waiting for server to be up ($ATTEMPT_NUMBER of $MAX_ATTEMPTS)"
|
|
LOGS=$(docker logs rc_test_env_rocketchat_1 2> /dev/null)
|
|
if grep -q 'SERVER RUNNING' <<< $LOGS ; then
|
|
echo "RocketChat is ready!"
|
|
break
|
|
else
|
|
if [ $ATTEMPT_NUMBER == $MAX_ATTEMPTS ]; then
|
|
echo "RocketChat failed to start"
|
|
if [ $PAUSE_ON_FAIL_FOR_DEBUG == 1 ]; then
|
|
read -n 1 -s -r -p "Press any key to tear down infrastructure." && echo
|
|
fi
|
|
docker-compose down --volumes
|
|
exit 1
|
|
fi
|
|
fi
|
|
sleep 4
|
|
done
|
|
fi
|
|
fi
|
|
|
|
if [ "$COMMAND" == "stop" ]; then
|
|
(
|
|
cd "$COMPOSEPATH"
|
|
docker-compose down --volumes
|
|
)
|
|
fi |