Avoid implementing a complex signal relaying mechanism in `docker-entrypoint*.sh`
Instead, the shell performs `exec node ...` and the `node` process receives the signals directly.
Related to #560, #575, which were my initial implemetation.
Avoid implementing a complex signal relaying mechanism in `docker-entrypoint*.sh`
Instead, the shell performs `exec node ...` and the `node` process receives the signals directly.
Related to #560, #575, which were my initial implemetation.
Start Xvfb wrapper in background and wait for the process to complete.
Because wait exits immediately when a signal for which a trap has been
set, and the signal handler is executed directly after that, we need to
wait again for the background processes to actually finish before exiting.
The signal handler catches INT and TERM and forwards them to the node
process.
The return value from the first wait is stored and sent as exit value.