From ce3115e52ca8a2b749e2bdbdc8d3d5bc3614e051 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Mon, 2 Dec 2024 17:45:18 +0100 Subject: [PATCH] Software install: Watchtower --- tools/include/images/CON007.png | Bin 0 -> 36798 bytes tools/include/markdown/CON007-footer.md | 1 + tools/include/markdown/CON007-header.md | 1 + tools/json/config.software.json | 20 ++++++ tools/modules/software/install_watchtower.sh | 68 +++++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 tools/include/images/CON007.png create mode 100644 tools/include/markdown/CON007-footer.md create mode 100644 tools/include/markdown/CON007-header.md create mode 100644 tools/modules/software/install_watchtower.sh diff --git a/tools/include/images/CON007.png b/tools/include/images/CON007.png new file mode 100644 index 0000000000000000000000000000000000000000..30495268d7ddc4e83f8c528c5221b630ce01560e GIT binary patch literal 36798 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 literal 0 HcmV?d00001 diff --git a/tools/include/markdown/CON007-footer.md b/tools/include/markdown/CON007-footer.md new file mode 100644 index 000000000..cb2741fed --- /dev/null +++ b/tools/include/markdown/CON007-footer.md @@ -0,0 +1 @@ +Every day watchtower will pull the latest images and compare it to the one that was used to run the certain container. If it sees that the image has changed it will stop/remove containers and then restart it using the new image and the same docker run options that were used to start the container initially. diff --git a/tools/include/markdown/CON007-header.md b/tools/include/markdown/CON007-header.md new file mode 100644 index 000000000..392b4e797 --- /dev/null +++ b/tools/include/markdown/CON007-header.md @@ -0,0 +1 @@ +Watchtower is an application that will monitor your running Docker containers and watch for changes to the images that those containers were originally started from. If watchtower detects that an image has changed, it will automatically restart the container using the new image. diff --git a/tools/json/config.software.json b/tools/json/config.software.json index b270d9c07..efbc91de5 100644 --- a/tools/json/config.software.json +++ b/tools/json/config.software.json @@ -773,6 +773,26 @@ "status": "Stable", "author": "@armbian", "condition": "module_portainer status" + }, + { + "id": "CON007", + "description": "Watchtower install", + "command": [ + "module_watchtower install" + ], + "status": "Stable", + "author": "@armbian", + "condition": "! module_watchtower status" + }, + { + "id": "CON008", + "description": "Watchtower remove", + "command": [ + "module_watchtower remove" + ], + "status": "Stable", + "author": "@armbian", + "condition": "module_watchtower status" } ] }, diff --git a/tools/modules/software/install_watchtower.sh b/tools/modules/software/install_watchtower.sh new file mode 100644 index 000000000..933d00715 --- /dev/null +++ b/tools/modules/software/install_watchtower.sh @@ -0,0 +1,68 @@ +module_options+=( + ["module_watchtower,author"]="@armbian" + ["module_watchtower,feature"]="module_watchtower" + ["module_watchtower,desc"]="Install watchtower container" + ["module_watchtower,example"]="install remove status help" + ["module_watchtower,port"]="" + ["module_watchtower,status"]="Active" + ["module_watchtower,arch"]="" +) +# +# Module watchtower +# +function module_watchtower () { + local title="watchtower" + local condition=$(which "$title" 2>/dev/null) + + if check_if_installed docker-ce; then + local container=$(docker container ls -a | mawk '/watchtower?( |$)/{print $1}') + local image=$(docker image ls -a | mawk '/watchtower?( |$)/{print $3}') + fi + + local commands + IFS=' ' read -r -a commands <<< "${module_options["module_watchtower,example"]}" + + case "$1" in + "${commands[0]}") + check_if_installed docker-ce || install_docker + docker run -d \ + --name watchtower \ + -v /var/run/docker.sock:/var/run/docker.sock \ + containrrr/watchtower + for i in $(seq 1 20); do + if docker inspect -f '{{ index .Config.Labels "build_version" }}' watchtower >/dev/null 2>&1 ; then + break + else + sleep 3 + fi + if [ $i -eq 20 ] ; then + echo -e "\nTimed out waiting for ${title} to start, consult your container logs for more info (\`docker logs watchtower\`)" + exit 1 + fi + done + ;; + "${commands[1]}") + [[ "${container}" ]] && docker container rm -f "$container" >/dev/null + [[ "${image}" ]] && docker image rm "$image" >/dev/null + ;; + "${commands[2]}") + if [[ "${container}" && "${image}" ]]; then + return 0 + else + return 1 + fi + ;; + "${commands[3]}") + echo -e "\nUsage: ${module_options["module_watchtower,feature"]} " + echo -e "Commands: ${module_options["module_watchtower,example"]}" + echo "Available commands:" + echo -e "\tinstall\t- Install $title." + echo -e "\tstatus\t- Installation status $title." + echo -e "\tremove\t- Remove $title." + echo + ;; + *) + ${module_options["module_watchtower,feature"]} ${commands[3]} + ;; + esac +}