Boot hooks are scripts which execute pre/post to events that occur in the run control script.
pre_configure, occurs before
REPLACE_OS_VARStriggers replacement, and before any generated files are generated
post_configure, ocurrs after environment variable replacement and after generated files are generated
pre_start, occurs before the release is started
post_start, occurs right after the release is started
pre_stop, occurs after a request to stop the release is issued, but before the release is stopped
post_stop, occurs after the release is stopped
pre_upgrade, occurs before the release is upgraded
post_upgrade, occurs right after the release is upgraded
Given a config like the following:
1 2 3 4 5 6 7 8 9 10
use Mix.Releases.Config environment :default do set pre_start_hooks: "rel/hooks/pre_start" set post_start_hooks: "rel/hooks/post_start" end release :myapp do set version: current_version(:myapp) end
And the two hook scripts:
# rel/hooks/pre_start/echo.sh echo "we're starting!"
# rel/hooks/post_start/echo.sh echo "we've started!"
When you build your release, and run it, you’ll see something like the following:
1 2 3 4 5
> _build/dev/rel/myapp/bin/myapp foreground we're starting! ...snip... we've started! ...snip...
You have access to anything defined in the run control script environment, see Shell Scripts for details.