diff --git a/Dockerfile b/Dockerfile index f576660..f5f005e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ ENV NODE_ENV="production" VOLUME /data WORKDIR /data EXPOSE 80 -ENTRYPOINT ["/usr/src/app/run.sh"] +ENTRYPOINT ["/bin/bash", "/usr/src/app/run.sh"] RUN apt-get -qq update \ && DEBIAN_FRONTEND=noninteractive apt-get -y install \ diff --git a/run.sh b/run.sh index 2c3aa4e..d952cc4 100755 --- a/run.sh +++ b/run.sh @@ -1,4 +1,13 @@ #!/bin/bash + +_term() { + echo "Caught signal, stopping gracefully" + kill -TERM "$child" 2>/dev/null +} + +trap _term TERM + + start-stop-daemon --start --pidfile ~/xvfb.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset echo "Waiting 3 seconds for xvfb to start..." sleep 3 @@ -6,7 +15,9 @@ sleep 3 export DISPLAY=:99.0 cd /data -node /usr/src/app/ -p 80 "$@" +node /usr/src/app/ -p 80 "$@" & +child=$! +wait "$child" start-stop-daemon --stop --pidfile ~/xvfb.pid # stop xvfb when exiting rm ~/xvfb.pid