mirror of
https://github.com/ledgersmb/ledgersmb-docker.git
synced 2025-04-19 14:47:12 -04:00
106 lines
3.0 KiB
Bash
Executable File
106 lines
3.0 KiB
Bash
Executable File
#!/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
|