diff --git a/run.sh b/run.sh index 5934647..c7e1b99 100755 --- a/run.sh +++ b/run.sh @@ -1,36 +1,27 @@ #!/bin/bash -# Find an open port -let p=99 -while [ ${p} -lt 3000 ] - do - if nc -z localhost ${p}; then - let p+=1 - else - let port=p - break - fi - done +function LOG { + echo $(date -R): $0: $* +} -let timeout=20 +displayNumber=1 +screenNumber=0 +export DISPLAY=:${displayNumber}.${screenNumber} -if [ "${port}" != "" ]; then - echo "The display port will be ${port}." +LOG "Starting Xvfb on ${DISPLAY}" start-stop-daemon --start --pidfile ~/xvfb.pid --make-pidfile --background \ - --exec /usr/bin/Xvfb -- :${port} -screen 0 1024x768x24 \ + --exec /usr/bin/Xvfb -- :${displayNumber} -screen ${screenNumber} 1024x768x24 \ -ac +extension GLX +render -noreset - # Wait to be able to connect to the port. This will exit if it cannot in 15 minutes. - timeout ${timeout} bash -c "while ! nc -z localhost ${port}; do sleep 0.5; done" - if [ $? -eq 0 ]; then - export DISPLAY=:${port}.0 +LOG "Waiting for display at ${DISPLAY}." - cd /data - node /usr/src/app/ -p 80 "$@" - else - echo "Could not connect to display port ${port} in ${timeout} seconds time." - fi +# Wait to be able to connect to the port. This will exit if it cannot in 15 minutes. +timeout ${timeout} bash -c "while ! xdpyinfo >/dev/null 2>&1; do sleep 0.5; done" +if [ $? -eq 0 ]; then + LOG "Display ${DISPLAY} is up." + LOG "Starting tileserver" + cd /data + node /usr/src/app/ -p 80 "$@" else - echo "Could not get a display port." - exit 1 + LOG "Could not connect to display port ${DSIPLAY} in ${timeout} seconds time." fi