diff --git a/shepherd b/shepherd index b8c1578..3a4ddad 100755 --- a/shepherd +++ b/shepherd @@ -97,6 +97,11 @@ update_services() { else logger "Trying to update service $name with image $image" "true" + num_tasks=$(docker service ls -f "name=$name" | awk 'NR==2{print $4}') + if [[ $num_tasks = 0/* ]]; then + detach_option="--detach=true" + fi + # shellcheck disable=SC2086 if ! timeout "${TIMEOUT:-300}" docker "${config_flag[@]}" service update "$name" $detach_option $registry_auth $no_resolve_image_flag ${UPDATE_OPTIONS} --image="$image" > /dev/null; then logger "Service $name update failed on $hostname!"