Docker & Servidores: Scripts Práticos para Limpeza, Dump e Restauração de Banco
Scripts prontos em Bash para gerenciamento do Docker e automação de rotinas de banco de dados em servidores Linux.
1. Subida e Limpeza Rápida de Contêineres Docker
Script para subir uma aplicação via Docker Compose e realizar a limpeza de contêineres parados, imagens órfãs e volumes não utilizados para economizar espaço em disco.
Bash
#!/bin/bash
# Subir/Atualizar a aplicação via Compose em segundo plano
echo "🚀 Subindo serviços com Docker Compose..."
docker compose up -d --build
# Aguarda 5 segundos para estabilização dos contêineres
sleep 5
# Executa a limpeza do ecossistema Docker
echo "🧹 Executando limpeza de itens inutilizados..."
docker system prune -f
# Limpa volumes não associados a nenhum contêiner rodando
docker volume prune -f
echo "✅ Ambiente Docker atualizado e limpo com sucesso!"
Pontos-chave:
docker compose up -d --build: Reconstrói imagens modificadas e sobe os contêineres no modo desanexado (detached).docker system prune -f: Remove contêineres parados, redes não utilizadas e imagens sem tag (dangling).docker volume prune -f: Apaga volumes orfãos que não estão em uso por nenhum contêiner ativo.
2. Dump (Backup) Automático de Banco de Dados MySQL/MariaDB
Gera um arquivo de backup
.sql.gz extraindo os dados diretamente de dentro de um contêiner em execução, adicionando o carimbo de data/hora.Bash
#!/bin/bash
CONTAINER_NOME="meu_mysql"
DB_USER="root"
DB_PASS="sua_senha_segura"
DB_NAME="minha_base"
PASTA_DESTINO="/backups/db"
DATA=$(date +%Y-%m-%d_%H-%M)
mkdir -p "$PASTA_DESTINO"
# Executa o mysqldump dentro do contêiner e compacta diretamente
docker exec -i "$CONTAINER_NOME" mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "${PASTA_DESTINO}/${DB_NAME}_${DATA}.sql.gz"
if [ $? -eq 0 ]; then
echo "✅ Dump da base '$DB_NAME' criado: ${DB_NAME}_${DATA}.sql.gz"
else
echo "❌ Falha ao gerar o dump do banco de dados."
fi
Pontos-chave:
docker exec -i: Executa o utilitáriomysqldumpinterativamente dentro do contêiner sem precisar instalar o cliente MySQL no host.gzip >: Reduz drasticamente o tamanho do arquivo final canalizando a saída diretamente para a compressão.
3. Restauração de Banco de Dados PostgreSQL via Docker
Lê um arquivo
.sql de backup localizado no servidor e restaura os dados para dentro de um contêiner de banco PostgreSQL.Bash
#!/bin/bash
CONTAINER_NOME="meu_postgres"
POSTGRES_USER="postgres"
DB_NAME="minha_base"
ARQUIVO_DUMP="/backups/db/restaurar.sql"
if [ ! -f "$ARQUIVO_DUMP" ]; then
echo "❌ Erro: O arquivo '$ARQUIVO_DUMP' nao foi encontrado!"
exit 1
fi
echo "🔄 Restaurando dados no PostgreSQL..."
cat "$ARQUIVO_DUMP" | docker exec -i "$CONTAINER_NOME" psql -U "$POSTGRES_USER" -d "$DB_NAME"
if [ $? -eq 0 ]; then
echo "✅ Restauração concluída com sucesso na base '$DB_NAME'."
else
echo "❌ Falha durante o processo de restauração."
fi
Pontos-chave:
cat ... | docker exec -i ... psql: Envia o fluxo do arquivo SQL local diretamente para o interpretador de comandospsqldentro do contêiner ativo.[ ! -f ... ]: Trava a execução e evita falhas no banco caso o caminho do arquivo de backup esteja incorreto.

Comentários
Postar um comentário