Initial commit - forked from the corresponding Smartfront repositories.
This commit is contained in:
81
.templates/bin/watchtower_redeploy
Executable file
81
.templates/bin/watchtower_redeploy
Executable file
@ -0,0 +1,81 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# https://containrrr.dev/watchtower/
|
||||
# https://hub.docker.com/r/containrrr/watchtower
|
||||
# https://github.com/containrrr/watchtower
|
||||
#
|
||||
# Email notification settings below assume the gateway acting
|
||||
# as a smarthost and Docker version v20.10+ is required.
|
||||
|
||||
image="containrrr/watchtower:latest"
|
||||
instance="watchtower"
|
||||
networks=""
|
||||
outfile=""
|
||||
volume=""
|
||||
|
||||
MSG_MISSINGDEP="Fatal: missing dependency"
|
||||
|
||||
# Checks the dependencies.
|
||||
TR=$(which tr 2>/dev/null)
|
||||
if [ -z "$TR" ]; then echo "$MSG_MISSINGDEP tr."; exit 1 ; fi
|
||||
for item in cat dirname docker hostname
|
||||
do
|
||||
if [ -n "$(which $item)" ]
|
||||
then export $(echo $item | "$TR" '[:lower:]' '[:upper:]')=$(which $item)
|
||||
else echo "$MSG_MISSINGDEP $item." >&2; exit 1; fi
|
||||
done
|
||||
|
||||
# Stops and removes the container (if necessary).
|
||||
if [ -n "$("$DOCKER" ps -q -f name=$instance)" ]
|
||||
then "$DOCKER" stop "$instance"; fi
|
||||
if [ -n "$("$DOCKER" ps -a -q -f name=$instance)" ]
|
||||
then "$DOCKER" rm "$instance"; fi
|
||||
|
||||
# Checks for an upgrade.
|
||||
$DOCKER pull "$image"
|
||||
|
||||
# Creates the container.
|
||||
$DOCKER create \
|
||||
-e TZ=$("$CAT" "/etc/timezone") \
|
||||
-e WATCHTOWER_CLEANUP=true \
|
||||
-e WATCHTOWER_DEBUG=false \
|
||||
-e WATCHTOWER_INCLUDE_STOPPED=true \
|
||||
-e WATCHTOWER_LABEL_ENABLE=true \
|
||||
-e WATCHTOWER_MONITOR_ONLY=true \
|
||||
-e WATCHTOWER_REVIVE_STOPPED=false \
|
||||
-e WATCHTOWER_NO_PULL=false \
|
||||
-e WATCHTOWER_SCHEDULE="0 0 1 * * *" \
|
||||
-e WATCHTOWER_WARN_ON_HEAD_FAILURE="never" \
|
||||
-e WATCHTOWER_NOTIFICATIONS=email \
|
||||
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM="$USER@$(hostname -f)" \
|
||||
-e WATCHTOWER_NOTIFICATION_EMAIL_TO="$USER@$(hostname)" \
|
||||
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER="host.docker.internal" \
|
||||
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=25 \
|
||||
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_TLS_SKIP_VERIFY=true \
|
||||
-e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=15 \
|
||||
-e WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG="[Watchtower $("$HOSTNAME")]" \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
--add-host="host.docker.internal:host-gateway" \
|
||||
--restart unless-stopped \
|
||||
--label "com.centurylinklabs.watchtower.enable=true" \
|
||||
--name $instance $image
|
||||
|
||||
# Connects it to the network(s).
|
||||
if [ -n "$networks" ]; then
|
||||
for network in $networks
|
||||
do
|
||||
# Checks the network, creates it if necessary.
|
||||
if [ -z "$("$DOCKER" network ls -q -f name=$network)" ]
|
||||
then "$DOCKER" network create -d bridge "$network"; fi
|
||||
# Then connects.
|
||||
$DOCKER network connect $network $instance
|
||||
done
|
||||
fi
|
||||
|
||||
# Finally launches it.
|
||||
$DOCKER start $instance
|
||||
if [ -n "$outfile" -a -w "$("$DIRNAME" "$outfile")" ]; then
|
||||
# Sets a background process to collect the image's output.
|
||||
# This process will automatically terminate when the image stops.
|
||||
"$DOCKER" logs -f $instance >>"$outfile" 2>&1 &
|
||||
fi
|
Reference in New Issue
Block a user