Skip to content

Commit 0ea4e97

Browse files
committed
Trap signals in container for proper shutdown
Signed-off-by: Joachim Wiberg <[email protected]>
1 parent d2794de commit 0ea4e97

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

Dockerfile

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,43 @@ RUN cat > /app/start.sh << 'EOF'
5959
#!/bin/sh
6060
# Smart startup: use existing X or start our own
6161

62+
cleanup()
63+
{
64+
echo "Shutting down..."
65+
if [ -n "$DEMOPID" ]; then
66+
kill $DEMOPID 2>/dev/null
67+
wait $DEMOPID 2>/dev/null
68+
fi
69+
if [ -n "$XPID" ]; then
70+
kill $XPID 2>/dev/null
71+
wait $XPID 2>/dev/null
72+
fi
73+
exit 0
74+
}
75+
76+
# Set up signal handlers
77+
trap cleanup TERM INT
78+
6279
# Check if X server is already available
6380
if xdpyinfo -display "${DISPLAY:-:0}" >/dev/null 2>&1; then
6481
echo "Using existing X server on $DISPLAY"
6582
exec ./demo "$@"
6683
else
6784
echo "No X server found, starting embedded X server..."
68-
# Start X server in background and run demo
85+
# Start X server in background
6986
Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile /tmp/xorg.log -config /etc/X11/xorg.conf :0 &
7087
XPID=$!
7188
sleep 2
72-
DISPLAY=:0 ./demo "$@"
89+
90+
# Run demo in background so we can handle signals
91+
DISPLAY=:0 ./demo "$@" &
92+
DEMOPID=$!
93+
94+
# Wait for demo to finish
95+
wait $DEMOPID
7396
EXITCODE=$?
97+
98+
# Clean up X server
7499
kill $XPID 2>/dev/null
75100
wait $XPID 2>/dev/null
76101
exit $EXITCODE

0 commit comments

Comments
 (0)