mirror of
https://github.com/alexhopeoconnor/bom-local-service.git
synced 2026-10-04 03:28:11 +10:00
- Move startup script to scripts/docker-start.sh for better organization - Add automatic monitoring and restart of Xvfb if it crashes - Improve error handling and cleanup on container shutdown - Prevents cache update failures when Xvfb process dies
51 lines
1.2 KiB
Bash
51 lines
1.2 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# Function to start Xvfb
|
|
start_xvfb() {
|
|
if ! pgrep -f "Xvfb :99" > /dev/null; then
|
|
echo "Starting Xvfb on display :99..."
|
|
Xvfb :99 -screen 0 1920x1080x24 -ac +extension GLX +render -noreset > /dev/null 2>&1 &
|
|
sleep 1
|
|
if ! pgrep -f "Xvfb :99" > /dev/null; then
|
|
echo "ERROR: Xvfb failed to start" >&2
|
|
return 1
|
|
fi
|
|
echo "Xvfb started successfully"
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# Function to monitor and restart Xvfb if it dies (runs as background process)
|
|
monitor_xvfb() {
|
|
# Monitor while PID 1 (dotnet after exec) is still running
|
|
while kill -0 1 2>/dev/null; do
|
|
sleep 5
|
|
if ! pgrep -f "Xvfb :99" > /dev/null; then
|
|
echo "WARNING: Xvfb process not found, restarting..." >&2
|
|
start_xvfb || true
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Cleanup function
|
|
cleanup() {
|
|
echo "Shutting down Xvfb..."
|
|
pkill -f "Xvfb :99" || true
|
|
}
|
|
|
|
# Set up signal handlers for cleanup
|
|
trap cleanup SIGTERM SIGINT EXIT
|
|
|
|
# Start Xvfb
|
|
start_xvfb || exit 1
|
|
|
|
# Export DISPLAY
|
|
export DISPLAY=:99
|
|
|
|
# Start monitoring in background (will check if PID 1 is still running)
|
|
monitor_xvfb &
|
|
|
|
# Start the .NET application (replaces shell as PID 1)
|
|
exec dotnet BomLocalService.dll
|