Addresses issue #197, send SIGTERM through to node
Node can't be PID 1, else it can't be term'ed and xvfb won't stop nicely. So, according to https://docs.docker.com/engine/reference/builder/#entrypoint, we need to make sure it's not the bare entrypoint. Also we need to be sure that run.sh passes the signal through to node, see https://unix.stackexchange.com/questions/146756/forward-sigterm-to-child-in-bash
This commit is contained in:
parent
83e20b7a4e
commit
8eb736b821
2 changed files with 13 additions and 2 deletions
|
@ -5,7 +5,7 @@ ENV NODE_ENV="production"
|
||||||
VOLUME /data
|
VOLUME /data
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
ENTRYPOINT ["/usr/src/app/run.sh"]
|
ENTRYPOINT ["/bin/bash", "/usr/src/app/run.sh"]
|
||||||
|
|
||||||
RUN apt-get -qq update \
|
RUN apt-get -qq update \
|
||||||
&& DEBIAN_FRONTEND=noninteractive apt-get -y install \
|
&& DEBIAN_FRONTEND=noninteractive apt-get -y install \
|
||||||
|
|
13
run.sh
13
run.sh
|
@ -1,4 +1,13 @@
|
||||||
#!/bin/bash
|
#!/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
|
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..."
|
echo "Waiting 3 seconds for xvfb to start..."
|
||||||
sleep 3
|
sleep 3
|
||||||
|
@ -6,7 +15,9 @@ sleep 3
|
||||||
export DISPLAY=:99.0
|
export DISPLAY=:99.0
|
||||||
|
|
||||||
cd /data
|
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
|
start-stop-daemon --stop --pidfile ~/xvfb.pid # stop xvfb when exiting
|
||||||
rm ~/xvfb.pid
|
rm ~/xvfb.pid
|
||||||
|
|
Loading…
Reference in a new issue