Skip to content

Instantly share code, notes, and snippets.

@rocka
Last active August 4, 2019 15:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rocka/f195c44c2b667a207f3032585f835aeb to your computer and use it in GitHub Desktop.
Save rocka/f195c44c2b667a207f3032585f835aeb to your computer and use it in GitHub Desktop.
Update all docker-compose projects to latest image
#!/bin/bash
msg() {
# green
echo -e "\e[32m==>\e[0m" "\e[1m$@\e[0m"
}
msg2() {
# blue
echo -e "\e[34m ->\e[0m" "\e[1m$@\e[0m"
}
warn() {
# yellow
echo -e "\e[33m==> WARNING:\e[0m" "\e[1m$@\e[0m"
}
err() {
# red
echo -e "\e[31m==> ERROR:\e[0m" "\e[1m$@\e[0m"
}
# docker images to update, eg. postgres:alpine
# replace with
#IMAGES=$(docker images --format '{{.Repository}}:{{.Tag}}')
# for all images.
IMAGES=(
)
# path to docker-compose projects
PROJECTS=(
)
msg "Updating images ..."
for img in ${IMAGES[*]}
do
msg2 "Pulling $img"
docker pull $img
done
msg "Restarting projects..."
for p in ${PROJECTS[*]}
do
msg2 "Checking $p"
dcy="$p/docker-compose.yml"
deps=$(docker-compose -f $dcy images | awk '{ if (NR>2) { printf $2 "\n" } }')
if [[ "$deps" =~ "<none>" ]];
then
docker-compose -f $dcy down
docker-compose -f $dcy up -d
else
echo "Project is up-to-date"
fi
done
msg "Cleaning dangling images..."
dangling=$(docker images --filter 'dangling=true' --quiet)
if [ -n "$dangling" ];
then
docker rmi $dangling --force
else
echo "Nothing to clean"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment