Last active
June 29, 2021 14:09
-
-
Save kphrx/cef9be30afb824eec2d2a22ae8c19583 to your computer and use it in GitHub Desktop.
docker container rolling update script with docker-compose. service name: "web"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
OLD_CONTAINER=$(docker ps --all --format "{{.Names}}" --filter name=web) | |
docker-compose pull web | |
docker-compose up -d --no-deps --scale web=2 --no-recreate web | |
NEW_CONTAINER=$(docker ps --all --format "{{.Names}}" --filter name=web | grep -v "$OLD_CONTAINER") | |
echo -n "Starting $NEW_CONTAINER ... " | |
while [ "$(docker ps --format "{{.Names}}" --filter name=web --filter health=healthy | grep "$NEW_CONTAINER")" = "" ]; do | |
sleep 3s | |
done | |
echo '\e[38;5;002mdone\e[m' | |
echo -n "Stopping and removing $OLD_CONTAINER ... " | |
docker kill -s SIGTERM $OLD_CONTAINER 2>&1 > /dev/null | |
if [ $? -ne 0 ]; then | |
exit 1 | |
fi | |
while [ "$(docker ps --format "{{.Names}}" --filter name=web --filter status=running | grep "$OLD_CONTAINER")" = "$OLD_CONTAINER" ]; do | |
sleep 3s | |
done | |
docker rm $OLD_CONTAINER 2>&1 > /dev/null | |
if [ $? -ne 0 ]; then | |
exit 1 | |
fi | |
echo '\e[38;5;002mdone\e[m' | |
docker-compose up -d --no-deps --scale web=1 --no-recreate web | |
docker image prune |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment