diff --git a/.github/container/ejabberdctl.template b/.github/container/ejabberdctl.template index 22e4177b1..e7e112ffa 100755 --- a/.github/container/ejabberdctl.template +++ b/.github/container/ejabberdctl.template @@ -331,13 +331,18 @@ post_waiter_loop() LIST=$@ HEAD=${LIST%% ; *} TAIL=${LIST#* ; } - echo ":> ejabberdctl $HEAD" - $0 $HEAD + HEAD2=${HEAD#\! *} + echo ":> ejabberdctl $HEAD2" + $0 $HEAD2 ctlstatus=$? if [ $ctlstatus -ne 0 ] ; then - echo ":> FAILURE in command '$HEAD' !!! Stopping ejabberd..." - $0 halt > /dev/null - exit $ctlstatus + if [ "$HEAD" != "$HEAD2" ] ; then + echo ":> FAILURE in command '$HEAD2' !!! Ignoring result" + else + echo ":> FAILURE in command '$HEAD' !!! Stopping ejabberd..." + $0 halt > /dev/null + exit $ctlstatus + fi fi [ "$HEAD" = "$TAIL" ] || post_waiter_loop $TAIL } diff --git a/CONTAINER.md b/CONTAINER.md index 7c7c233ef..06d01dbcc 100644 --- a/CONTAINER.md +++ b/CONTAINER.md @@ -221,10 +221,13 @@ and reads `CTL_ON_START` every time the container is started. Those variables can contain one ejabberdctl command, or several commands separated with the blankspace and `;` characters. +By default failure of any of commands executed that way would +abort start, this can be disabled by prefixing commands with `!` + Example usage (or check the [full example](#customized-example)): ```yaml environment: - - CTL_ON_CREATE=register admin localhost asd + - CTL_ON_CREATE=\! register admin localhost asd - CTL_ON_START=stats registeredusers ; check_password admin localhost asd ; status @@ -411,7 +414,9 @@ In this example, the main container is created first. Once it is fully started and healthy, a second container is created, and once ejabberd is started in it, it joins the first one. -An account is registered in the first node when created, +An account is registered in the first node when created (and +we ignore errors that can happen when doing that - for example +whenn account already exists), and it should exist in the second node after join. Notice that in this example the main container does not have access @@ -428,7 +433,7 @@ services: environment: - ERLANG_NODE_ARG=ejabberd@main - ERLANG_COOKIE=dummycookie123 - - CTL_ON_CREATE=register admin localhost asd + - CTL_ON_CREATE=\! register admin localhost asd replica: image: ghcr.io/processone/ejabberd