starting point for a "quickstart" script

This commit is contained in:
sbts 2017-05-26 17:55:45 +08:00
parent a53dd55ecf
commit 0627a33477

View File

@ -0,0 +1,105 @@
#!/bin/bash
clear
PGuser='postgres'
PGpass='password'
PGcontainerName='lsmb-postgres'
LSMBcontainerName='myledger'
export POSTGRES_HOST='postgres'
export POSTGRES_PORT='5432'
export DEFAULT_DB='lsmb'
CheckWhatIsRunning() {
isrunning_pg=false;
isrunning_lsmb=false;
while read -t10 line || { echo; false; } do
if [[ $line =~ $PGcontainerName ]]; then isrunning_pg=true; fi
if [[ $line =~ $LSMBcontainerName ]]; then isrunning_lsmb=true; fi
done < <( docker ps )
}
StartPostgres() {
if $isrunning_pg; then
echo "Postgres container $PGcontainerName is already running";
else
echo "Starting Postgres container $PGcontainerName"
if docker inspect $PGcontainerName &>/dev/null; then # container exists so start it
docker start $PGcontainerName
else # container doesn't exist so run it
docker run --name $PGcontainerName -e POSTGRES_PASSWORD="$PGpass" -d postgres
fi
fi
}
StartLedgerSMB() {
if $isrunning_lsmb; then
echo "LedgerSMB container $LSMBcontainerName is already running";
else
echo "Starting LedgerSMB container $LSMBcontainerName"
if docker inspect $LSMBcontainerName &>/dev/null; then # container exists so start it
docker start $LSMBcontainerName >/dev/null
else # container doesn't exist so run it
docker run --name $LSMBcontainerName --link lsmb-postgres:postgres -d ledgersmb/ledgersmb
fi
fi
}
GetIPs() {
containerIPlsmbPostgres=`docker inspect -f '{{ .NetworkSettings.IPAddress }}' lsmb-postgres`
containerIPlsmb=`docker inspect -f '{{ .NetworkSettings.IPAddress }}' myledger`
}
PrintInfo() {
printf " %32s: IP %s\n" "$PGcontainerName" "$containerIPlsmbPostgres"
printf " %32s: IP %s\n" "$LSMBcontainerName" "$containerIPlsmb"
echo
}
TestLSMB() { # If any arg is passed then don't echo anything
if wget --tries=1 --timeout=2 -O /dev/null -q http://$containerIPlsmb:5762/setup.pl; then
[[ -z $1 ]] && echo "LSMB server accessible"
return 0
else
[[ -z $1 ]] && echo "Failed to connect to LSMB server"
return 1
fi
}
timestamp() {
date "+%s"
}
WaitForContainers() {
timer=60
read -st10 timeoutAt < <( timestamp )
(( timeoutAt = timeoutAt + timer ))
(( now = `timestamp` ))
(( lasttimestamp = now ))
echo
echo "wait at least $timer seconds for containers to start"
echo -en "\r$(( timeoutAt - now )) "
while { now=`timestamp`; (( now < timeoutAt )); } do
echo -en "\r$(( timeoutAt - now )) "
if (( now <= lasttimestamp )); then continue; fi
(( lasttimestamp = now ))
if [[ -z $containerIPlsmb ]]; then GetIPs &>/dev/null; fi
echo -en "\r$(( timeoutAt - now )) "
TestLSMB -s
if (( $? == 0 )); then echo; break; fi
echo -en "\r$(( timeoutAt - now )) "
done
echo
}
CheckWhatIsRunning
StartPostgres
StartLedgerSMB
WaitForContainers
TestLSMB
PrintInfo