Files
docker-scripts/docker-deploy
T

63 lines
1.6 KiB
Bash
Raw Normal View History

2017-09-26 12:52:39 +02:00
#!/bin/bash -e
2017-09-26 13:15:14 +02:00
while test $# -gt 0; do
case "$1" in
(-h|--help) cat <<EOF
$0 [OPTIONS] FILES…
OPTIONS
-h, --help show this help
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
Deploys stack from yaml files. The stack name is identical to the
file name, but wihout path and without .yaml extendsion.
2026-09-30 15:30:47 +02:00
The deployment carries the registry credentials of this machine to
the nodes, so run docker login here before deploying images from a
registry that asks for one or counts anonymous pulls.
2017-09-26 13:15:14 +02:00
EXAMPLS
The following calls ado the same and deploy a local yaml file:
$0 yaml-file-name
$0 yaml-file-name.yaml
$0 ./yaml-file-name.yaml
Deploy three files from three sources:
$0 /path/to/file1/first.yaml /path/to/file2/second.yaml third
EOF
exit;;
(*) break;;
esac
if test $# -lt 1; then
echo "error: missing argument, try $0 --help" 1>&2
exit 1
fi
shift
done
2017-09-26 12:52:39 +02:00
for f in $*; do
f=${f%.yaml}
if ! test -e ${f}.yaml; then
echo "ERROR: no file ${f}.yaml" 1>&2
exit 1
fi
2018-01-07 15:05:54 +01:00
echo "... deploying ${f##*/}"
for d in $(sed -n 's,^ *source: \(/.*\),\1,p' ${f}.yaml); do
2017-09-26 12:52:39 +02:00
test -e $d || mkdir -p $d
done
2026-09-30 15:30:47 +02:00
# --with-registry-auth hands the credentials of this machine to the swarm
# managers, which pass them on with every task: without them each node
# pulls anonymously and runs into the pull limit of the registry
docker stack deploy --with-registry-auth --compose-file ${f}.yaml ${f##*/}
2017-09-26 12:52:39 +02:00
done