Skip to content

Instantly share code, notes, and snippets.

@sr2ds
Created March 27, 2020 13:52
Show Gist options
  • Save sr2ds/6409e4463b8f3de34596fa7973fa4941 to your computer and use it in GitHub Desktop.
Save sr2ds/6409e4463b8f3de34596fa7973fa4941 to your computer and use it in GitHub Desktop.
init blue green docker
#!/bin/bash
API_NAME=usuario
#
# verifica se tem algum container deste serviço
hasAny() {
return $(docker ps | grep ${API_NAME} | wc -l)
}
#
# verifica se existe container verde
hasGreen() {
return $(docker ps | grep ${API_NAME} | grep _green | wc -l)
}
#
# verifica se existe container verde ativo e offline
# todo: verificar se os green estão offline
hasGreenOffline() {
return $(docker ps | grep ${API_NAME} | grep _green | wc -l)
}
#
# mata os containers blue ativos
killBlue() {
docker ps --format '{{.Names}}' | grep $API_NAME | grep -v _green | while read container_name; do
docker stop $container_name >>/dev/null
done
}
#
# converte green para blue
makeNewBlue() {
docker ps --format '{{.Names}}' | grep $API_NAME | grep _green | while read container_name; do
COMPOSE_PROJECT_NAME= && VERSION=
container_name_without_green=${container_name//_green/}
docker rename $container_name $container_name_without_green
done
}
#
# cria container green
makeNewGreen() {
export COMPOSE_PROJECT_NAME="__green" && export VERSION="__green"
docker-compose -f docker-compose.dev.yml up --build -d >>/dev/null
}
#
# ativa o container no kong
setOnline() {
}
# 1 caso
hasAny
if [ $? -eq "0" ]; then
makeNewBlue
setOnline
fi
# 2 caso
hasGreen
if [ $? -eq "0" ]; then
makeNewGreen
setOnline
fi
# 3 caso
hasGreenOffline
if [ $? -ne "0" ]; then
killBlue
makeNewBlue
setOnline
makeNewGreen
setOnline
fi
docker ps
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment