Mercurial > sat_docs
diff docker/base/scripts/sat @ 116:d0a5db5b9bdf
docker: fixed bad stopping:
- use exec when it was missing, so the TERM signal is properly catched, and containers can be stopped instead of being killed after 10s
- for a unknown reason, exec and su don't handle correctly "$@" with Docker in base.scripts/sat. It's working as expected when launched from withing a running container, but not when launched with "docker run", so a workaround is used with trap and wait
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 04 Mar 2016 23:31:26 +0100 |
parents | b69056368901 |
children |
line wrap: on
line diff
--- a/docker/base/scripts/sat Fri Mar 04 23:25:42 2016 +0100 +++ b/docker/base/scripts/sat Fri Mar 04 23:31:26 2016 +0100 @@ -1,4 +1,17 @@ #!/bin/sh # account domain is set, then sat is launched with D-Bus activated -chmod a+w /etc/hosts -su -c "set_account_domain && dbus-launch /usr/bin/sat $@" sat + +# XXX: exec is not working with Docker and su here for whatever reason, so using trap/wait workaround +# thanks to cuonglm for the tip (https://unix.stackexchange.com/questions/146756/forward-sigterm-to-child-in-bash/146770#146770) + +on_sigterm() { + /usr/bin/sat stop + # to have a proper exit code + exit $? +} +trap on_sigterm TERM + +set_account_domain +eval $(dbus-launch --sh-syntax) +su -c "/usr/bin/sat $@" sat & +wait $!