update docs for lifecycle hooks

This commit is contained in:
Niklas Wigertz 2019-08-26 16:44:10 +02:00
parent 36b8994933
commit 04d9ca39d5

View file

@ -1,41 +1,47 @@
## Executing commands before and after updating ## Executing commands before and after updating
> **DO NOTE**: Both commands are shell commands executed with `sh`, and therefore require the > **DO NOTE**: These are shell commands executed with `sh`, and therefore require the
> container to provide the `sh` executable. > container to provide the `sh` executable.
It is possible to execute a *pre-update* command and a *post-update* command It is possible to execute _pre/post\-check_ and _pre/post\-update_ commands
**inside** every container updated by watchtower. The *pre-update* command is **inside** every container updated by watchtower.
executed before stopping the container, and the *post-update* command is
executed after restarting the container. - The _pre-check_ command is executed before checking the container for updates.
- The _pre-update_ command is executed before stopping the container when an update is about to start.
- The _post-update_ command is executed after restarting the updated container
- The _post-check_ command is executed last after a updated container is started or no update was needed.
This feature is disabled by default. To enable it, you need to set the option This feature is disabled by default. To enable it, you need to set the option
`--enable-lifecycle-hooks` on the command line, or set the environment variable `--enable-lifecycle-hooks` on the command line, or set the environment variable
`WATCHTOWER_LIFECYCLE_HOOKS` to `true`. `WATCHTOWER_LIFECYCLE_HOOKS` to `true`.
### Specifying update commands ### Specifying update commands
The commands are specified using docker container labels, with The commands are specified using docker container labels, the following are currently available:
`com.centurylinklabs.watchtower.lifecycle.pre-update-command` for the *pre-update*
command and `com.centurylinklabs.watchtower.lifecycle.post-update` for the
*post-update* command.
These labels can be declared as instructions in a Dockerfile: - `com.centurylinklabs.watchtower.lifecycle.pre-check` - _pre-check_
- `com.centurylinklabs.watchtower.lifecycle.pre-update-command` - _pre-update_
- `com.centurylinklabs.watchtower.lifecycle.post-update` - _post-update_
- `com.centurylinklabs.watchtower.lifecycle.post-check` - _post-check_
These labels can be declared as instructions in a Dockerfile (with some example .sh files):
```docker ```docker
LABEL com.centurylinklabs.watchtower.lifecycle.pre-check="/sync.sh"
LABEL com.centurylinklabs.watchtower.lifecycle.pre-update="/dump-data.sh" LABEL com.centurylinklabs.watchtower.lifecycle.pre-update="/dump-data.sh"
LABEL com.centurylinklabs.watchtower.lifecycle.post-update="/restore-data.sh" LABEL com.centurylinklabs.watchtower.lifecycle.post-update="/restore-data.sh"
LABEL com.centurylinklabs.watchtower.lifecycle.post-check="/send-heartbeat.sh"
``` ```
Or be specified as part of the `docker run` command line: Or be specified as part of the `docker run` command line:
```bash ```bash
docker run -d \ docker run -d \
--label=com.centurylinklabs.watchtower.lifecycle.pre-check="/sync.sh" \
--label=com.centurylinklabs.watchtower.lifecycle.pre-update="/dump-data.sh" \ --label=com.centurylinklabs.watchtower.lifecycle.pre-update="/dump-data.sh" \
--label=com.centurylinklabs.watchtower.lifecycle.post-update="/restore-data.sh" \ --label=com.centurylinklabs.watchtower.lifecycle.post-update="/restore-data.sh" \
someimage someimage
--label=com.centurylinklabs.watchtower.lifecycle.post-check="/send-heartbeat.sh" \
``` ```
### Execution failure ### Execution failure