When -s flag is used, start stopped containers so they are updated and then stop them again (#269)

* Start stopped containers (when -s is used) so that updates apply
* Automatically re-stop stopped containers after updating
This commit is contained in:
Philip Baylas 2026-03-11 15:50:38 +00:00 committed by GitHub
parent d46b38ddad
commit 32f3dfbb2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -650,6 +650,7 @@ if [[ -n "${GotUpdates:-}" ]]; then
for i in "${SelectedUpdates[@]}"; do
((CurrentQue+=1))
unset CompleteConfs
ContStopAfter=false
# Extract labels and metadata
ContConfig=$(docker inspect "$i" --format '{{json .}}')
ContLabels=$($jqbin -r '."Config"."Labels"' <<< "$ContConfig")
@ -671,8 +672,8 @@ if [[ -n "${GotUpdates:-}" ]]; then
if [[ "$ContStateRunning" == "true" ]]; then
printf "\n%bNow recreating (%s/%s): %b%s%b\n" "$c_teal" "$CurrentQue" "$NumberofUpdates" "$c_blue" "$i" "$c_reset"
else
printf "\n%bSkipping recreation of %b%s%b as it's not running.%b\n" "$c_yellow" "$c_blue" "$i" "$c_yellow" "$c_reset"
continue
ContStopAfter=true
printf "\n%bRecreating %b%s%b to apply update - then stopping to return to current state.%b\n" "$c_yellow" "$c_blue" "$i" "$c_yellow" "$c_reset"
fi
# Checking if compose-values are empty - hence started with docker run
@ -698,6 +699,11 @@ if [[ -n "${GotUpdates:-}" ]]; then
else
${DockerBin} ${CompleteConfs} ${ContEnvs} up -d ${SpecificContainer} || { printf "\n%bDocker error, exiting!%b\n" "$c_red" "$c_reset" ; exit 1; }
fi
# Restore the stopped state of updated cotainers
if [[ "$ContStopAfter" == true ]]; then
${DockerBin} ${CompleteConfs} stop ${SpecificContainer} || { printf "\n%bDocker error, exiting!%b\n" "$c_red" "$c_reset" ; exit 1; }
fi
done
fi
printf "\n%bAll updates done!%b\n" "$c_green" "$c_reset"