Script da Rotina do Nosso Ambiente Docker
A automação de rotinas de infraestrutura e controle de versão é um divisor de águas na rotina do time de desenvolvimento. O uso de um script Shell interativo simplifica operações diárias relacionadas ao Docker e ao Git, trazendo padronização, agilidade e redução de erros operacionais. A substituição de sequências de comandos no terminal por uma interface por menu simplifica as tarefas diárias da equipe. O processo de versionamento é padronizado e a dependência da memorização de sintaxes complexas
-------------------------------------------------------------------------------------------------
03/10/2026 ***** DOCKER BASIC SERVICES ***** 17:15:24
-------------------------------------------------------------------------------------------------
Docher Atual: [HOM]
-------------------------------------------------------------------------------------------------
1 - TRANSFERIR ARQUIVOS
2 - MUDAR HOMOLOGACAO/PRODUCAO
3 - SYSTEM STATUS
4 - GIT PULL
0 - EXIT DOCKER
-------------------------------------------------------------------------------------------------
Escolha uma opção:
Script para rodar no Linux
#!/bin/bash
cd ~/Documentos/Docker/k0522-passagem-de-turno/
# Criamos um loop infinito que só para quando o comando 'break' for acionado
while true; do
# Verifica se a pasta atual é um repositório Git e pega o nome da branch
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
# Pega a branch atual e transforma em MAIÚSCULO (ex: hom vira HOM)
BRANCH_ATUAL=$(git branch --show-current | tr '[:lower:]' '[:upper:]')
STATUS_REPO="Docher Atual: [$BRANCH_ATUAL]"
else
STATUS_REPO="Fora de um repositório Git"
fi
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n " "
echo -n " ***** DOCKER BASIC SERVICES ***** "
echo -n " "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo " $STATUS_REPO"
echo
echo "-------------------------------------------------------------------------------------------------"
echo " 1 - TRANSFERIR ARQUIVOS "
echo " 2 - MUDAR HOMOLOGACAO/PRODUCAO "
echo " 3 - SYSTEM STATUS "
echo " 4 - GIT PULL "
echo " 0 - EXIT DOCKER "
echo "-------------------------------------------------------------------------------------------------"
echo
read -p " Escolha uma opção: " opcao
echo "" # Linha em branco para organizar o visual
case $opcao in
# ------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------
1) # Commitar e dar push
cd ~/Documentos/Docker/k0522-passagem-de-turno/
date
git status
git add .
git commit -m "$(date '+%d/%m/%Y as %H:%M')"
git push
echo
echo -e "\nLimpando a tela em 1 segundos..."
# Aguarda 1 segundos e sai da tela
# sleep 1
# Limpa o terminal
# clear
;;
# ------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------
2) # Mudar de branch
cd ~/Documentos/Docker/k0522-passagem-de-turno/
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n " "
echo -n " ***** DOCKER BASIC SERVICES ***** "
echo -n " "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo " $STATUS_REPO"
echo
echo "-------------------------------------------------------------------------------------------------"
echo " Para qual Docker deseja mudar? "
echo
echo " 1 - Homologação (hom) "
echo " 2 - Produção (prd) "
echo "-------------------------------------------------------------------------------------------------"
echo
read -p "Escolha uma das Opções: " branch
if [ "$branch" = "1" ]; then
git switch hom
elif [ "$branch" = "2" ]; then
git switch prd
else
echo "Branch inválida!"
fi
echo
echo -e "\nLimpando a tela em 1 segundos..."
# Aguarda 1 segundos e sai da tela
sleep 1
# Limpa o terminal
clear
;;
# ------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------
3) # git status
cd ~/Documentos/Docker/k0522-passagem-de-turno/
git status
echo
read -p "Pressione Enter para voltar..."
;;
# ------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------
4)
echo -e "=== Sincronizando o repositório Docker ===\n"
# 1. Entra no diretório
cd ~/Documentos/Docker/k0522-passagem-de-turno/ || { echo "Erro: Diretório não encontrado!"; break; }
# 2. Mostra o status atual antes de puxar as alterações
echo -e "\n--> Verificando status do Git..."
git status -s
# 3. Executa o git pull sem abrir editores interativos em caso de merge
echo -e "\n--> Baixando atualizações do servidor (git pull)..."
GIT_TERMINAL_PROMPT=0 git pull --no-rebase --no-edit
# Check de erro do Git
if [ $? -eq 0 ]; then
echo -e "\n[SUCESSO] Repositório sincronizado com sucesso!"
else
echo -e "\n[ERRO] Falha ao sincronizar o Git. Verifique suas credenciais ou conflitos locais."
fi
# 4. Pausa interativa para você LER o resultado antes de limpar a tela
echo
read -p "Pressione [ENTER] para retornar ao menu..."
clear
;;
# ------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------
0) # echo "Saindo do programa... Até logo!"
break # Quebra o loop e encerra o script
clear
;;
# ------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------
*)
echo "Opção inválida! Tente novamente."
clear
;;
esac
echo "" # Outra linha em branco antes de reiniciar o menu
done






















