Files
docker-scripts/docker-update
Marc Wäckerlin 4a9818c111 fix --force
2020-04-15 11:57:36 +02:00

54 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
limit=''
force=''
while test $# -gt 0; do
case "$1" in
(-h|--help) cat <<EOF
$0 [OPTIONS] FILES…
OPTIONS
-h, --help show this help
-s, --limit service limit update to given service
-f, --force force update
FILES…
List of stack names or yaml files to deploy. There must be yaml
files with the same name. The extension .yaml may be given or not.
DESCRIPTION
Updates the docker images of all services in the given stacks.
EOF
exit;;
(-l|--limit) shift; limit=$1;;
(-f|--force) force='--force';;
(*) break;;
esac
if test $# -lt 1; then
echo "error: missing argument, try $0 --help" 1>&2
exit 1
fi
shift
done
for f in $*; do
name=${f%.yaml}
file=${name}.yaml
name=${name##*/}
echo "upgrading ${name}"
IFS="
"
for param in $(sed -n '/^ *\([^:]\+\): *$/{s,,'"${name}"'_\1,;h};/^ *image: */{s///;G;s/\n/ /p}' $file); do
IFS=" "
if [ -z "$limit" ] || [[ "${param}" =~ " ${name}_${limit}" ]]; then
echo "....update $param: docker service update --image $param"
docker service update $force --image $param
fi
done
done