Compare commits

...

30 Commits

Author SHA1 Message Date
mag37
80a81f59d6 Merge pull request #50 from mag37/printf_rework
Added option -m, monochrome mode + cleaning.
2023-12-23 20:54:45 +01:00
mag37
ba3f436ac9 Added -m option, monochrome mode. 2023-12-23 20:52:04 +01:00
mag37
24438124eb cleaned up some variable names and help-section 2023-12-23 20:47:23 +01:00
mag37
e39ea0748f Update dockcheck.sh
Added -m, Monochrome Mode.
2023-12-19 22:52:11 +01:00
mag37
ab30f22343 rework of the printf's color escape codes 2023-12-19 20:24:34 +01:00
mag37
d39badea36 Upd README.md 2023-12-14 20:55:55 +01:00
mag37
9a1f2aa7c7 Upd README.md 2023-12-14 20:44:53 +01:00
mag37
15d3a96b2c Merge pull request #47 from mag37/agecheck
datecheck merge.
2023-12-14 13:28:39 +01:00
mag37
fbd27d6e37 Changed datecheck logic.
Printing how old in days a skipped "too new" image is.
2023-12-14 09:06:19 +01:00
mag37
7bd5f87ed1 Upd README 2023-12-13 20:16:20 +01:00
mag37
e24cba0078 upd readme 3.0 2023-12-13 19:59:58 +01:00
mag37
886379dc7d v3.0 big commit, added date-check function 2023-12-13 19:50:58 +01:00
mag37
488669b99a Update README.md
added recent change info.
2023-12-09 10:59:27 +01:00
mag37
e20fdd9e85 regctl logic changes, check and download will match the scripts workdir. 2023-12-09 10:56:22 +01:00
mag37
3d1c424d23 Update dockcheck.sh
added a regctl-check for when regctl is within the pwd.
(as suggested by @yoyoma2 )
2023-11-19 20:20:05 +01:00
mag37
132fda3388 Update README.md 2023-08-29 20:42:00 +02:00
mag37
cc9b3b0828 Update README.md 2023-08-28 21:31:18 +02:00
mag37
29c2c5e961 Merge pull request #41 from elchanly/elchanly-patch-1
Update dockcheck.sh to include stopped containers
2023-08-28 21:26:12 +02:00
mag37
5dc9af9874 Update dockcheck.sh
Did some changes to the logic, cleaned some whitespace.
2023-08-28 21:24:23 +02:00
elchanly
f91ca08d54 Update dockcheck.sh to include stopped containers
as suggested in reddit, this is proposed to include stopped containers
take into account im not skilled in this programming language but i wanted to contribute.
2023-08-21 23:56:03 +02:00
mag37
9a246b52c4 Merge pull request #39 from mag37/fixing
Fixes `dc_brief.sh` to only exclude exact matches.
2023-07-11 23:33:02 +02:00
mag37
0c33f581f7 Removed old exclude-logic 2023-07-11 23:30:46 +02:00
mag37
b492aacf0f minor edits 2023-07-11 23:11:14 +02:00
mag37
f498138d4b Added recent "exclude containers"-bugfix to the dc_brief.sh 2023-07-11 23:05:34 +02:00
mag37
6a3198eb08 Update dockcheck.sh
patched the self_update logic to respect (and skip interaction) if `-y|a` flag is passed.
2023-06-28 18:03:56 +02:00
mag37
48bfea9fbf Merge pull request #36 from mag37/dev1
Fixes the Exclude-option to only exclude exact matches. 
Formatting: Added counter and info message on current update.
2023-06-27 20:45:12 +02:00
mag37
f2fc5a4d34 Updated: 2.4 info 2023-06-27 19:45:21 +02:00
mag37
f0940e81ec Fixes to the Exclude-option to only exclude exact matches, instead of
wildcarding and excluding by mistake.

Added a counter + message about which container updating.
2023-06-27 19:34:20 +02:00
mag37
a25e648557 Changes to the Exclude-option to only exclude exact matches. 2023-06-21 20:09:31 +02:00
mag37
0e2bdc94ad Update README.md 2023-03-08 12:48:36 +01:00
4 changed files with 106 additions and 57 deletions

View File

@@ -2,7 +2,8 @@
<img src="extras/dockcheck_logo_by_booYah187.png" width="160" title="dockcheck"> <img src="extras/dockcheck_logo_by_booYah187.png" width="160" title="dockcheck">
</p> </p>
<p align="center"> <p align="center">
<img src="https://img.shields.io/badge/-bash-grey?style=flat-square&logo=gnubash" alt="bash"> <img src="https://img.shields.io/badge/coded%20by%20Human-100%25-yellow?style=flat-square" alt="No AI!">
<img src="https://img.shields.io/badge/bash-4.3-green?style=flat-square&logo=gnubash" alt="bash">
<a href="https://www.gnu.org/licenses/gpl-3.0.html"><img src="https://img.shields.io/badge/license-GPLv3-red?style=flat-square" alt="GPLv3"></a> <a href="https://www.gnu.org/licenses/gpl-3.0.html"><img src="https://img.shields.io/badge/license-GPLv3-red?style=flat-square" alt="GPLv3"></a>
<img src="https://img.shields.io/github/v/tag/mag37/dockcheck?style=flat-square&label=release" alt="release"> <img src="https://img.shields.io/github/v/tag/mag37/dockcheck?style=flat-square&label=release" alt="release">
<a href="https://ko-fi.com/mag37"><img src="https://img.shields.io/badge/-Ko--fi-grey?style=flat-square&logo=Ko-fi" alt="Buy me a Coffee"></a> <a href="https://ko-fi.com/mag37"><img src="https://img.shields.io/badge/-Ko--fi-grey?style=flat-square&logo=Ko-fi" alt="Buy me a Coffee"></a>
@@ -14,11 +15,12 @@
<h4 align="center">With features like excluding specific containers, filter by name, auto-prune dangling images and more.</h4</h3> <h4 align="center">With features like excluding specific containers, filter by name, auto-prune dangling images and more.</h4</h3>
### :warning: URGENT! The 2.1 change had a breaking error - make sure you run an updated version. ### :bell: Recent changes
If you've had errors, inspect your containers and look for odd compose paths, volumes or ports. - **v0.3.1**: Addded option `-m` , monochrome mode - no printf color codes.
[errorCheck.sh](https://github.com/mag37/dockcheck/blob/main/errorCheck.sh) lists the important bits of each running container. If anything suspicious, recreate the container manually with `docker compose`. - **v0.3.0**: Added option `-d N`, age (days) new images have to be before being pulled and updated.
- **v0.2.6**: regctl check / download logic changed. Now using the scripts directory as primary location.
### :pushpin: Recent changes: - **v0.2.5**: Added a new option `-s` to include stopped containers in the check for updates.
- **v0.2.4**: Fixed a bug with the Exclude-logic to only exclude exact matches. Added a counter.
- **v0.2.3**: Added a self updating function (curl/git) and a ugly changenote-message for updates. - **v0.2.3**: Added a self updating function (curl/git) and a ugly changenote-message for updates.
- **v0.2.2**: Fixed breaking errors with multi-compose, odd breakage and working dir error. - **v0.2.2**: Fixed breaking errors with multi-compose, odd breakage and working dir error.
- **v0.2.1**: Added option to exclude a list of containers. - **v0.2.1**: Added option to exclude a list of containers.
@@ -27,7 +29,7 @@ If you've had errors, inspect your containers and look for odd compose paths, vo
- **v0.1.9:** Fixed custom env-support. - **v0.1.9:** Fixed custom env-support.
___ ___
## Dependencies: ## Dependencies
Running docker (duh) and compose, either standalone or plugin. Running docker (duh) and compose, either standalone or plugin.
[`regclient/regctl`](https://github.com/regclient/regclient) (Licensed under [Apache-2.0 License](http://www.apache.org/licenses/LICENSE-2.0)) [`regclient/regctl`](https://github.com/regclient/regclient) (Licensed under [Apache-2.0 License](http://www.apache.org/licenses/LICENSE-2.0))
User will be prompted to download `regctl` if not in `PATH` or `PWD` User will be prompted to download `regctl` if not in `PATH` or `PWD`
@@ -39,16 +41,18 @@ ___
## `dockcheck.sh` ## `dockcheck.sh`
``` ```
$ ./dockcheck.sh -h $ ./dockcheck.sh -h
Syntax: dockcheck.sh [OPTION] [part of name to filter] Syntax: dockcheck.sh [OPTION] [part of name to filter]
Example: dockcheck.sh -a -e nextcloud,heimdall Example: dockcheck.sh -y -d 10 -e nextcloud,heimdall
Options: Options:
-h Print this Help. -h Print this Help.
-a|y Automatic updates, without interaction. -a|y Automatic updates, without interaction.
-n No updates, only checking availability. -n No updates, only checking availability.
-p Auto-Prune dangling images after update. -e X Exclude containers, separated by comma.
-e Exclude containers, separated by comma. -d N Only update to new images that are N+ days old. Lists too recent with +prefix. 2xSlower.
-r Allow updating images for docker run, wont update the container. -p Auto-Prune dangling images after update.
-r Allow updating images for docker run, wont update the container.
-s Include stopped containers in the check. (Logic: docker ps -a).
``` ```
Basic example: Basic example:
@@ -64,22 +68,21 @@ Containers with updates available:
2) syncthing 2) syncthing
3) whoogle-search 3) whoogle-search
Choose what containers to update: Choose what containers to update:
Enter number(s) separated by comma, [a] for all - [q] to quit: Enter number(s) separated by comma, [a] for all - [q] to quit:
``` ```
Then it proceedes to run `pull` and `up -d` on every container with updates. Then it proceedes to run `pull` and `up -d` on every container with updates.
After the updates are complete, you'll get prompted if you'd like to prune dangling images. After the updates are complete, you'll get prompted if you'd like to prune dangling images.
### `-r flag` :warning: disclaimer and warning: ### :warning: `-r flag` disclaimer and warning
**Wont auto-update the containers, only their images. (compose is recommended)** **Wont auto-update the containers, only their images. (compose is recommended)**
`docker run` dont support using new images just by restarting a container. `docker run` dont support using new images just by restarting a container.
Containers need to be manually stopped, removed and created again to run on the new image. Containers need to be manually stopped, removed and created again to run on the new image.
### :hammer: Known issues ### :hammer: Known issues
- No detailed error feedback (just skip + list what's skipped) . - No detailed error feedback (just skip + list what's skipped).
- Not respecting `--profile` options when re-creating the container. - Not respecting `--profile` options when re-creating the container.
- Not working well with containers created by Portainer.
## `dc_brief.sh` ## `dc_brief.sh`
Just a brief, slimmed down version of the script to only print what containers got updates, no updates or errors. Just a brief, slimmed down version of the script to only print what containers got updates, no updates or errors.
@@ -88,9 +91,8 @@ Just a brief, slimmed down version of the script to only print what containers g
dockcheck is created and released under the [GNU GPL v3.0](https://www.gnu.org/licenses/gpl-3.0-standalone.html) license. dockcheck is created and released under the [GNU GPL v3.0](https://www.gnu.org/licenses/gpl-3.0-standalone.html) license.
___ ___
## Check out a spinoff brother-project: ### Check out a spinoff project: [Palleri/DCW](https://github.com/Palleri/DCW) for a WebUI-front with exporters and notifications.
### [Palleri/dockcheck-web](https://github.com/Palleri/dockcheck-web) for a WebUI-front!
## Special Thanks: ## Special Thanks
- :bison: [t0rnis](https://github.com/t0rnis) - :bison: [t0rnis](https://github.com/t0rnis)
- :leopard: [Palleri](https://github.com/Palleri) - :leopard: [Palleri](https://github.com/Palleri)

View File

@@ -16,7 +16,7 @@ IFS=',' read -r -a Excludes <<< "$Exclude" ; unset IFS
SearchName="$1" SearchName="$1"
for i in $(docker ps --filter "name=$SearchName" --format '{{.Names}}') ; do for i in $(docker ps --filter "name=$SearchName" --format '{{.Names}}') ; do
[[ " ${Excludes[*]} " =~ ${i} ]] && continue; # Skip if the container is excluded for e in "${Excludes[@]}" ; do [[ "$i" == "$e" ]] && continue 2 ; done
printf ". " printf ". "
RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}') RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}')
LocalHash=$(docker image inspect "$RepoUrl" --format '{{.RepoDigests}}') LocalHash=$(docker image inspect "$RepoUrl" --format '{{.RepoDigests}}')

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
VERSION="v0.2.3" VERSION="v0.3.1"
### ChangeNotes: Added self-updating git/curl-function and a dirty changenote. ### ChangeNotes: Added feature (-m) Monochrome Mode, no printf color codes.
Github="https://github.com/mag37/dockcheck" Github="https://github.com/mag37/dockcheck"
RawUrl="https://raw.githubusercontent.com/mag37/dockcheck/main/dockcheck.sh" RawUrl="https://raw.githubusercontent.com/mag37/dockcheck/main/dockcheck.sh"
@@ -17,25 +17,42 @@ LatestChanges="$(curl -s -r 0-200 $RawUrl | sed -n "/ChangeNotes/s/### ChangeNot
### Help Function: ### Help Function:
Help() { Help() {
echo "Syntax: dockcheck.sh [OPTION] [part of name to filter]" echo "Syntax: dockcheck.sh [OPTION] [part of name to filter]"
echo "Example: dockcheck.sh -a -e nextcloud,heimdall" echo "Example: dockcheck.sh -y -d 10 -e nextcloud,heimdall"
echo echo
echo "Options:" echo "Options:"
echo "-h Print this Help."
echo "-a|y Automatic updates, without interaction." echo "-a|y Automatic updates, without interaction."
echo "-d N Only update to new images that are N+ days old. Lists too recent with +prefix and age. 2xSlower."
echo "-e X Exclude containers, separated by comma."
echo "-h Print this Help."
echo "-m Monochrome mode, no printf color codes."
echo "-n No updates, only checking availability." echo "-n No updates, only checking availability."
echo "-e Exclude containers, separated by comma."
echo "-p Auto-Prune dangling images after update." echo "-p Auto-Prune dangling images after update."
echo "-r Allow updating images for docker run, wont update the container" echo "-r Allow updating images for docker run, wont update the container"
echo "-s Include stopped containers in the check. (Logic: docker ps -a)"
} }
while getopts "aynprhe:" options; do ### Colors:
c_red="\033[0;31m"
c_green="\033[0;32m"
c_yellow="\033[0;33m"
c_blue="\033[0;34m"
c_teal="\033[0;36m"
c_reset="\033[0m"
Stopped=""
while getopts "aynprhsme:d:" options; do
case "${options}" in case "${options}" in
a|y) UpdYes="yes" ;; a|y) AutoUp="yes" ;;
n) UpdYes="no" ;; n) AutoUp="no" ;;
r) DrUp="yes" ;; r) DRunUp="yes" ;;
p) PruneQ="yes" ;; p) AutoPrune="yes" ;;
e) Exclude=${OPTARG} ;; e) Exclude=${OPTARG} ;;
h|*) Help ; exit 0 ;; m) declare c_{red,green,yellow,blue,teal,reset}="" ;;
s) Stopped="-a" ;;
d) DaysOld=${OPTARG}
if ! [[ $DaysOld =~ ^[0-9]+$ ]] ; then { printf "Days -d argument given (%s) is not a number.\n" "${DaysOld}" ; exit 2 ; } ; fi ;;
h|*) Help ; exit 2 ;;
esac esac
done done
shift "$((OPTIND-1))" shift "$((OPTIND-1))"
@@ -47,7 +64,6 @@ self_update_git() {
git fetch git fetch
[ -n "$(git diff --name-only "$ScriptUpstream" "$ScriptName")" ] && { [ -n "$(git diff --name-only "$ScriptUpstream" "$ScriptName")" ] && {
printf "%s\n" "Pulling the latest version." printf "%s\n" "Pulling the latest version."
# git checkout "$ScriptUpstream"
git pull --force git pull --force
printf "%s\n" "--- starting over with the updated version ---" printf "%s\n" "--- starting over with the updated version ---"
cd - || { printf "Path error.\n" ; return ; } cd - || { printf "Path error.\n" ; return ; }
@@ -100,8 +116,19 @@ choosecontainers() {
printf "\n" printf "\n"
} }
datecheck() {
ImageDate=$($regbin image inspect "$RepoUrl" --format='{{.Created}}' | cut -d" " -f1 )
ImageAge=$((($(date +%s) - $(date -d "$ImageDate" +%s))/86400))
if [ $ImageAge -gt $DaysOld ] ; then
return 0
else
return 1
fi
}
### Version check & initiate self update ### Version check & initiate self update
[[ "$VERSION" != "$LatestRelease" ]] && { printf "New version available! Local: %s - Latest: %s \n Change Notes: %s \n" "$VERSION" "$LatestRelease" "$LatestChanges" ; self_update_select ; } [[ "$VERSION" != "$LatestRelease" ]] && { printf "New version available! Local: %s - Latest: %s \n Change Notes: %s \n" "$VERSION" "$LatestRelease" "$LatestChanges" ; [[ -z "$AutoUp" ]] && self_update_select ; }
### Set $1 to a variable for name filtering later. ### Set $1 to a variable for name filtering later.
SearchName="$1" SearchName="$1"
@@ -110,7 +137,7 @@ IFS=',' read -r -a Excludes <<< "$Exclude" ; unset IFS
### Check if required binary exists in PATH or directory: ### Check if required binary exists in PATH or directory:
if [[ $(builtin type -P "regctl") ]]; then regbin="regctl" ; if [[ $(builtin type -P "regctl") ]]; then regbin="regctl" ;
elif [[ -f "./regctl" ]]; then regbin="./regctl" ; elif [[ -f "$ScriptWorkDir/regctl" ]]; then regbin="$ScriptWorkDir/regctl" ;
else else
read -r -p "Required dependency 'regctl' missing, do you want it downloaded? y/[n] " GetDep read -r -p "Required dependency 'regctl' missing, do you want it downloaded? y/[n] " GetDep
if [[ "$GetDep" =~ [yY] ]] ; then if [[ "$GetDep" =~ [yY] ]] ; then
@@ -121,8 +148,8 @@ else
*) echo "Architecture not supported, exiting." ; exit 1;; *) echo "Architecture not supported, exiting." ; exit 1;;
esac esac
RegUrl="https://github.com/regclient/regclient/releases/latest/download/regctl-linux-$architecture" RegUrl="https://github.com/regclient/regclient/releases/latest/download/regctl-linux-$architecture"
if [[ $(builtin type -P curl) ]]; then curl -L $RegUrl > ./regctl ; chmod +x ./regctl ; regbin="./regctl" ; if [[ $(builtin type -P curl) ]]; then curl -L $RegUrl > "$ScriptWorkDir/regctl" ; chmod +x "$ScriptWorkDir/regctl" ; regbin="$ScriptWorkDir/regctl" ;
elif [[ $(builtin type -P wget) ]]; then wget $RegUrl -O ./regctl ; chmod +x ./regctl ; regbin="./regctl" ; elif [[ $(builtin type -P wget) ]]; then wget $RegUrl -O "$ScriptWorkDir/regctl" ; chmod +x "$ScriptWorkDir/regctl" ; regbin="$ScriptWorkDir/regctl" ;
else else
printf "%s\n" "curl/wget not available - get regctl manually from the repo link, quitting." printf "%s\n" "curl/wget not available - get regctl manually from the repo link, quitting."
fi fi
@@ -154,15 +181,31 @@ for i in "${GotUpdates[@]}"; do
done done
} }
### Listing typed exclusions:
if [[ -n ${Excludes[*]} ]] ; then
printf "\n%bExcluding these names:%b\n" $c_blue $c_reset
printf "%s\n" "${Excludes[@]}"
printf "\n"
fi
### Check the image-hash of every running container VS the registry ### Check the image-hash of every running container VS the registry
for i in $(docker ps --filter "name=$SearchName" --format '{{.Names}}') ; do for i in $(docker ps $Stopped --filter "name=$SearchName" --format '{{.Names}}') ; do
[[ " ${Excludes[*]} " =~ ${i} ]] && continue; # Skip if the container is excluded ### Looping every item over the list of excluded names and skipping:
for e in "${Excludes[@]}" ; do [[ "$i" == "$e" ]] && continue 2 ; done
printf ". " printf ". "
RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}') RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}')
LocalHash=$(docker image inspect "$RepoUrl" --format '{{.RepoDigests}}') LocalHash=$(docker image inspect "$RepoUrl" --format '{{.RepoDigests}}')
### Checking for errors while setting the variable: ### Checking for errors while setting the variable:
if RegHash=$($regbin image digest --list "$RepoUrl" 2>/dev/null) ; then if RegHash=$($regbin image digest --list "$RepoUrl" 2>/dev/null) ; then
if [[ "$LocalHash" = *"$RegHash"* ]] ; then NoUpdates+=("$i"); else GotUpdates+=("$i"); fi if [[ "$LocalHash" = *"$RegHash"* ]] ; then
NoUpdates+=("$i")
else
if [[ -n "$DaysOld" ]] && ! datecheck ; then
NoUpdates+=("+$i ${ImageAge}d")
else
GotUpdates+=("$i")
fi
fi
else else
GotErrors+=("$i") GotErrors+=("$i")
fi fi
@@ -179,29 +222,32 @@ UpdCount="${#GotUpdates[@]}"
### List what containers got updates or not ### List what containers got updates or not
if [[ -n ${NoUpdates[*]} ]] ; then if [[ -n ${NoUpdates[*]} ]] ; then
printf "\n\033[0;32mContainers on latest version:\033[0m\n" printf "\n%bContainers on latest version:%b\n" "$c_green" "$c_reset"
printf "%s\n" "${NoUpdates[@]}" printf "%s\n" "${NoUpdates[@]}"
fi fi
if [[ -n ${GotErrors[*]} ]] ; then if [[ -n ${GotErrors[*]} ]] ; then
printf "\n\033[0;31mContainers with errors, wont get updated:\033[0m\n" printf "\n%bContainers with errors, wont get updated:%b\n" "$c_red" "$c_reset"
printf "%s\n" "${GotErrors[@]}" printf "%s\n" "${GotErrors[@]}"
fi fi
if [[ -n ${GotUpdates[*]} ]] ; then if [[ -n ${GotUpdates[*]} ]] ; then
printf "\n\033[0;33mContainers with updates available:\033[0m\n" printf "\n%bContainers with updates available:%b\n" "$c_yellow" "$c_reset"
[[ -z "$UpdYes" ]] && options || printf "%s\n" "${GotUpdates[@]}" [[ -z "$AutoUp" ]] && options || printf "%s\n" "${GotUpdates[@]}"
fi fi
### Optionally get updates if there's any ### Optionally get updates if there's any
if [ -n "$GotUpdates" ] ; then if [ -n "$GotUpdates" ] ; then
if [ -z "$UpdYes" ] ; then if [ -z "$AutoUp" ] ; then
printf "\n\033[0;36mChoose what containers to update.\033[0m\n" printf "\n%bChoose what containers to update.%b\n" "$c_teal" "$c_reset"
choosecontainers choosecontainers
else else
SelectedUpdates=( "${GotUpdates[@]}" ) SelectedUpdates=( "${GotUpdates[@]}" )
fi fi
if [ "$UpdYes" == "${UpdYes#[Nn]}" ] ; then if [ "$AutoUp" == "${AutoUp#[Nn]}" ] ; then
NumberofUpdates="${#SelectedUpdates[@]}"
CurrentQue=0
for i in "${SelectedUpdates[@]}" for i in "${SelectedUpdates[@]}"
do do
((CurrentQue+=1))
unset CompleteConfs unset CompleteConfs
ContPath=$(docker inspect "$i" --format '{{ index .Config.Labels "com.docker.compose.project.working_dir" }}') ContPath=$(docker inspect "$i" --format '{{ index .Config.Labels "com.docker.compose.project.working_dir" }}')
ContConfigFile=$(docker inspect "$i" --format '{{ index .Config.Labels "com.docker.compose.project.config_files" }}') ContConfigFile=$(docker inspect "$i" --format '{{ index .Config.Labels "com.docker.compose.project.config_files" }}')
@@ -210,11 +256,11 @@ if [ -n "$GotUpdates" ] ; then
ContImage=$(docker inspect "$i" --format='{{.Config.Image}}') ContImage=$(docker inspect "$i" --format='{{.Config.Image}}')
### Checking if compose-values are empty - hence started with docker run: ### Checking if compose-values are empty - hence started with docker run:
if [ -z "$ContPath" ] ; then if [ -z "$ContPath" ] ; then
if [ "$DrUp" == "yes" ] ; then if [ "$DRunUp" == "yes" ] ; then
docker pull "$ContImage" docker pull "$ContImage"
printf "%s\n" "$i got a new image downloaded, rebuild manually with preferred 'docker run'-parameters" printf "%s\n" "$i got a new image downloaded, rebuild manually with preferred 'docker run'-parameters"
else else
printf "\n\033[33;1m%s\033[0m has no compose labels, probably started with docker run - \033[33;1mskipping\033[0m\n\n" "$i" printf "\n%b%s%b has no compose labels, probably started with docker run - %bskipping%b\n\n" "$c_yellow" "$i" "$c_reset" "$c_yellow" "$c_reset"
fi fi
continue continue
fi fi
@@ -226,6 +272,7 @@ if [ -n "$GotUpdates" ] ; then
fi fi
### cd to the compose-file directory to account for people who use relative volumes, eg - ${PWD}/data:data ### cd to the compose-file directory to account for people who use relative volumes, eg - ${PWD}/data:data
cd "$ContPath" || { echo "Path error - skipping $i" ; continue ; } cd "$ContPath" || { echo "Path error - skipping $i" ; continue ; }
printf "\n%bNow updating (%s/%s): %b%s%b\n" "$c_teal" "$CurrentQue" "$NumberofUpdates" "$c_blue" "$i" "$c_reset"
docker pull "$ContImage" docker pull "$ContImage"
### Reformat for multi-compose: ### Reformat for multi-compose:
IFS=',' read -r -a Confs <<< "$ComposeFile" ; unset IFS IFS=',' read -r -a Confs <<< "$ComposeFile" ; unset IFS
@@ -238,9 +285,9 @@ if [ -n "$GotUpdates" ] ; then
$DockerBin ${CompleteConfs[@]} up -d "$ContName" # unquoted array to allow split - rework? $DockerBin ${CompleteConfs[@]} up -d "$ContName" # unquoted array to allow split - rework?
fi fi
done done
printf "\033[0;32mAll done!\033[0m\n" printf "\n%bAll done!%b\n" "$c_green" "$c_reset"
[[ -z "$PruneQ" ]] && read -r -p "Would you like to prune dangling images? y/[n]: " PruneQ [[ -z "$AutoPrune" ]] && read -r -p "Would you like to prune dangling images? y/[n]: " AutoPrune
[[ "$PruneQ" =~ [yY] ]] && docker image prune -f [[ "$AutoPrune" =~ [yY] ]] && docker image prune -f
else else
printf "\nNo updates installed, exiting.\n" printf "\nNo updates installed, exiting.\n"
fi fi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 KiB

After

Width:  |  Height:  |  Size: 404 KiB